Functions to load and save images from/to disk. More...
Classes | |
class | pixel_callable |
class | modification_queue |
A modified priority queue used to order image modifications. More... | |
class | modification |
Base abstract class for an image-path modification. More... | |
class | rc_modification |
Recolor (RC/TC/PAL) modification. More... | |
class | fl_modification |
Mirror (FL) modification. More... | |
class | rotate_modification |
Rotate (ROTATE) modification. More... | |
class | gs_modification |
Grayscale (GS) modification. More... | |
class | bw_modification |
Black and white (BW) modification. More... | |
struct | sepia_modification |
Give to the image a sepia tint (SEPIA) More... | |
class | negative_modification |
Make an image negative (NEG) More... | |
class | plot_alpha_modification |
Plot Alpha (Alpha) modification. More... | |
class | wipe_alpha_modification |
Wipe Alpha (Wipe_Alpha) modification. More... | |
class | adjust_alpha_modification |
Adjust Alpha (ADJUST_ALPHA) modification. More... | |
class | adjust_channels_modification |
Adjust Channels (CHAN) modification. More... | |
class | crop_modification |
Crop (CROP) modification. More... | |
class | blit_modification |
Scale (BLIT) modification. More... | |
class | mask_modification |
Mask (MASK) modification. More... | |
class | light_modification |
LIGHT (L) modification. More... | |
class | scale_modification |
Scaling modifications base class. More... | |
class | scale_exact_modification |
Scale exact modification. More... | |
class | scale_into_modification |
Scale into (SCALE_INTO) modification. More... | |
class | xbrz_modification |
xBRZ scale (xBRZ) modification More... | |
class | o_modification |
Opacity (O) modification. More... | |
class | cs_modification |
Color-shift (CS, R, G, B) modification. More... | |
class | blend_modification |
Color blending (BLEND) modification. More... | |
class | bl_modification |
Gaussian-like blur (BL) modification. More... | |
struct | background_modification |
Fill background with a color (BG). More... | |
class | swap_modification |
Channel swap (SWAP). More... | |
class | cache_type |
class | locator |
Generic locator abstracting the location of an image. More... | |
struct | manager |
Image cache manager. 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 class | scale_quality { nearest , linear } |
enum class | save_result { success , unsupported_format , save_failed , 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_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 |
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 164 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 184 of file picture.hpp.
Lit variants for each locator.
Definition at line 191 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 187 of file picture.hpp.
Definition at line 192 of file picture.hpp.
typedef std::map<light_string, texture> image::lit_texture_variants |
Definition at line 188 of file picture.hpp.
typedef std::map<t_translation::terrain_code, surface> image::mini_terrain_cache_map |
Definition at line 166 of file picture.hpp.
typedef cache_type<surface> image::surface_cache |
Definition at line 162 of file picture.hpp.
typedef cache_type<texture> image::texture_cache |
Definition at line 163 of file picture.hpp.
|
strong |
Enumerator | |
---|---|
success | |
unsupported_format | |
save_failed | |
no_image |
Definition at line 330 of file picture.hpp.
|
strong |
Enumerator | |
---|---|
nearest | |
linear |
Definition at line 241 of file picture.hpp.
enum image::TYPE |
Used to specify the rendering format of images.
Definition at line 230 of file picture.hpp.
|
static |
Definition at line 347 of file picture.cpp.
References filesystem::make_read_RWops(), and sdl_blit().
Referenced by load_image_file().
|
static |
Definition at line 523 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 |
bool image::exists | ( | const image::locator & | i_locator | ) |
Returns true if the given image actually exists, without loading it.
Definition at line 879 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(), 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 225 of file picture.cpp.
References mini_fogged_terrain_cache, mini_highlighted_terrain_cache, and mini_terrain_cache.
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 622 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 821 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().
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 511 of file picture.cpp.
References b, col_to_uchar(), and g.
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 749 of file picture.cpp.
References image::locator::access_in_cache(), 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 785 of file picture.cpp.
References image::locator::access_in_cache(), 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 827 of file picture.cpp.
References get_surface(), s, and UNSCALED.
Referenced by gui2::image::calculate_best_size(), display::draw_hex(), unit_frame::get_overlaped_hex(), intf_get_image_size(), gui::menu::style::item_size(), unit_frame::redraw(), 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 686 of file picture.cpp.
References image::locator::add_to_cache(), image::locator::copy_from_cache(), 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_lighted_image(), get_size(), get_texture(), get_tod_colored(), getMinimap(), help::image_width(), 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 image::locator & | i_locator, |
scale_quality | quality, | ||
TYPE | type, | ||
bool | skip_cache | ||
) |
Returns a texture for the corresponding image.
Definition at line 991 of file picture.cpp.
References image::locator::add_to_cache(), image::locator::copy_from_cache(), DBG_IMG, image::locator::get_modifications(), get_surface(), HEXED, image::locator::is_void(), linear, simplify_type(), and TOD_COLORED.
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 985 of file picture.cpp.
References nearest.
Referenced by help::help_text_area::add_img_item(), gui2::image_shape::draw(), gui::scrollbar::draw_contents(), arrow::draw_hex(), wb::attack::draw_hex(), wb::suppose_dead::draw_hex(), display::draw_hex(), editor::editor_display::draw_hex(), game_display::draw_hex(), display::draw_label(), game_display::draw_movement_info(), 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_paste::set_mouse_overlay(), editor::mouse_action_starting_position::set_mouse_overlay(), editor::mouse_action_map_label::set_mouse_overlay(), editor::mouse_action_select::set_mouse_overlay(), editor::mouse_action_village::set_mouse_overlay(), editor::mouse_action::set_terrain_mouse_overlay(), editor::mouse_action_unit::set_unit_mouse_overlay(), editor::item_palette::setup_item(), editor::terrain_palette::setup_item(), editor::unit_palette::setup_item(), gui::tristate_button::tristate_button(), and halo::halo_impl::effect::update().
Definition at line 661 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, team::get_minimap_color(), display::get_singleton(), get_surface(), terrain_type_data::get_terrain_info(), gamemap_base::h(), 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, w, 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 860 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 837 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 584 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 475 of file picture.cpp.
References base64::decode(), ERR_IMG, and image::locator::get_filename().
Referenced by load_from_disk().
|
static |
Definition at line 360 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 411 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(), 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 259 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 930 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 903 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 949 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 954 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 609 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 668 of file picture.cpp.
References image::locator::get_loc(), HEXED, TOD_COLORED, UNSCALED, and map_location::valid().
Referenced by get_surface(), and get_texture().
mini_terrain_cache_map image::mini_fogged_terrain_cache |
Definition at line 222 of file picture.cpp.
Referenced by flush_cache(), and getMinimap().
mini_terrain_cache_map image::mini_highlighted_terrain_cache |
Definition at line 223 of file picture.cpp.
Referenced by flush_cache(), and getMinimap().
mini_terrain_cache_map image::mini_terrain_cache |
Definition at line 221 of file picture.cpp.
Referenced by flush_cache(), and getMinimap().