The Battle for Wesnoth  1.15.13+dev
Classes | Typedefs | Enumerations | Functions | Variables
image Namespace Reference

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< surfaceimage_cache
 
typedef cache_type< bool > bool_cache
 
typedef std::map< t_translation::terrain_code, surfacemini_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, surfacelit_variants
 Type used to pair light possibilities with the corresponding lit surface. More...
 
typedef cache_type< lit_variantslit_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
 

Detailed Description

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.

surface surf = image::get_image("units/elves-wood/shyde.png~TC(4,magenta)~FL()",

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 Documentation

◆ bool_cache

Definition at line 155 of file picture.hpp.

◆ image_cache

Definition at line 154 of file picture.hpp.

◆ light_string

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.

◆ lit_cache

Lit variants for each locator.

Definition at line 181 of file picture.hpp.

◆ lit_variants

Type used to pair light possibilities with the corresponding lit surface.

Definition at line 178 of file picture.hpp.

◆ mini_terrain_cache_map

Definition at line 157 of file picture.hpp.

Enumeration Type Documentation

◆ save_result

enum image::save_result
strong
Enumerator
success 
unsupported_format 
save_failed 
no_image 

Definition at line 299 of file picture.hpp.

◆ TYPE

Used to specify the rendering format of images.

Enumerator
UNSCALED 

Unmodified original-size image.

SCALED_TO_ZOOM 

Image rescaled according to the zoom settings.

HEXED 

Standard hexagonal tile mask applied, removing portions that don't fit.

SCALED_TO_HEX 

Image rescaled to fit into a hexagonal tile according to the zoom settings.

TOD_COLORED 

Same as SCALED_TO_HEX, but with Time of Day color tint applied.

BRIGHTENED 

Same as TOD_COLORED, but also brightened.

Definition at line 228 of file picture.hpp.

Function Documentation

◆ add_localized_overlay()

static void image::add_localized_overlay ( const std::string &  ovr_file,
surface orig_surf 
)
static

Definition at line 443 of file picture.cpp.

References filesystem::make_read_RWops(), and sdl_blit().

Referenced by load_image_file().

◆ apply_light()

static surface image::apply_light ( surface  surf,
const light_string ls 
)
static

◆ col_to_uchar()

static signed char image::col_to_uchar ( int  i)
static

Definition at line 587 of file picture.cpp.

Referenced by get_light_string().

◆ exists()

bool image::exists ( const image::locator i_locator)

◆ flush_cache()

void image::flush_cache ( )

◆ get_brightened()

static surface image::get_brightened ( const locator i_locator)
static

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().

◆ get_hexed()

static surface image::get_hexed ( const locator i_locator)
static

◆ get_hexmask()

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().

◆ get_image()

surface image::get_image ( const locator i_locator,
TYPE  type = UNSCALED 
)

Caches and returns an image.

Parameters
i_locatorImage path.
typeRendering 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().

◆ get_light_string()

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().

◆ get_lighted_image()

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.

Parameters
i_locatorImage path.
lsLight map to apply to the image.
typeThis 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().

◆ get_scaled_to_hex()

static surface image::get_scaled_to_hex ( const locator i_locator)
static

Definition at line 734 of file picture.cpp.

References get_image(), HEXED, and scale_surface_nn().

Referenced by get_image().

◆ get_scaled_to_zoom()

static surface image::get_scaled_to_zoom ( const locator i_locator)
static

Definition at line 753 of file picture.cpp.

References get_image(), scale_surface_nn(), game_config::tile_size, and UNSCALED.

Referenced by get_image().

◆ get_tod_colored()

static surface image::get_tod_colored ( const locator i_locator)
static

Definition at line 747 of file picture.cpp.

References adjust_surface_color(), get_image(), and SCALED_TO_HEX.

Referenced by get_image().

◆ getMinimap()

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 
)

◆ is_empty_hex()

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().

◆ is_in_hex()

bool image::is_in_hex ( const locator i_locator)

◆ load_from_disk()

surface image::load_from_disk ( const locator loc)

◆ load_image_data_uri()

static surface image::load_image_data_uri ( const image::locator loc)
static

Definition at line 556 of file picture.cpp.

References base64::decode(), ERR_DP, and image::locator::get_filename().

Referenced by load_from_disk().

◆ load_image_file()

static surface image::load_image_file ( const image::locator loc)
static

◆ load_image_sub_file()

static surface image::load_image_sub_file ( const image::locator loc)
static

◆ precache_file_existence()

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().

◆ precache_file_existence_internal()

static void image::precache_file_existence_internal ( const std::string &  dir,
const std::string &  subdir 
)
static

◆ precached_file_exists()

bool image::precached_file_exists ( const std::string &  file)

Definition at line 1070 of file picture.cpp.

References b.

Referenced by image_exists().

◆ reverse_image()

surface image::reverse_image ( const surface surf)

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_image() [1/2]

save_result image::save_image ( const locator i_locator,
const std::string &  filename 
)

◆ save_image() [2/2]

save_result image::save_image ( const surface surf,
const std::string &  filename 
)

◆ set_color_adjustment()

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.

References b, and g.

Referenced by display::update_tod().

◆ set_zoom()

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().

◆ simplify_type()

static TYPE image::simplify_type ( const image::locator i_locator,
TYPE  type 
)
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().

Variable Documentation

◆ last_index_

int image::last_index_ = 0
static

Definition at line 219 of file picture.cpp.

◆ mini_fogged_terrain_cache

mini_terrain_cache_map image::mini_fogged_terrain_cache

Definition at line 216 of file picture.cpp.

Referenced by getMinimap().

◆ mini_highlighted_terrain_cache

mini_terrain_cache_map image::mini_highlighted_terrain_cache

Definition at line 217 of file picture.cpp.

Referenced by getMinimap().

◆ mini_terrain_cache

mini_terrain_cache_map image::mini_terrain_cache

Definition at line 215 of file picture.cpp.

Referenced by getMinimap().