The Battle for Wesnoth  1.19.5+dev
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
surface Class Reference

#include <surface.hpp>

Public Member Functions

 surface ()
 
 surface (SDL_Surface *surf)
 
 surface (int w, int h)
 Allocates a new surface with the given dimensions. More...
 
 surface (const surface &s)
 
 surface (surface &&s) noexcept
 
 ~surface ()
 
surfaceoperator= (const surface &s)
 
surfaceoperator= (surface &&s) noexcept
 
bool is_neutral () const
 Check that the surface is neutral bpp 32. More...
 
surfacemake_neutral ()
 Converts this surface to a neutral format if it is not already. More...
 
surface clone () const
 Makes a copy of this surface. More...
 
int area () const
 Total area of the surface in square pixels. More...
 
 operator SDL_Surface * () const
 
SDL_Surface * get () const
 
SDL_Surface * operator-> () const
 

Private Member Functions

void assign_surface_internal (SDL_Surface *surf)
 
void free_surface ()
 

Static Private Member Functions

static void add_surface_ref (SDL_Surface *surf)
 

Private Attributes

SDL_Surface * surface_
 

Static Private Attributes

static const SDL_PixelFormat neutral_pixel_format
 

Detailed Description

Definition at line 24 of file surface.hpp.

Constructor & Destructor Documentation

◆ surface() [1/5]

surface::surface ( )
inline

Definition at line 27 of file surface.hpp.

Referenced by clone().

◆ surface() [2/5]

surface::surface ( SDL_Surface *  surf)

Definition at line 24 of file surface.cpp.

References make_neutral().

◆ surface() [3/5]

surface::surface ( int  w,
int  h 
)

Allocates a new surface with the given dimensions.

Definition at line 30 of file surface.cpp.

References h, neutral_pixel_format, surface_, and w.

◆ surface() [4/5]

surface::surface ( const surface s)
inline

Definition at line 35 of file surface.hpp.

References add_surface_ref(), and surface_.

◆ surface() [5/5]

surface::surface ( surface &&  s)
inlinenoexcept

Definition at line 40 of file surface.hpp.

References s.

◆ ~surface()

surface::~surface ( )
inline

Definition at line 45 of file surface.hpp.

References free_surface().

Member Function Documentation

◆ add_surface_ref()

static void surface::add_surface_ref ( SDL_Surface *  surf)
inlinestaticprivate

Definition at line 102 of file surface.hpp.

References surf.

Referenced by assign_surface_internal(), and surface().

◆ area()

int surface::area ( ) const
inline

◆ assign_surface_internal()

void surface::assign_surface_internal ( SDL_Surface *  surf)
private

Definition at line 69 of file surface.cpp.

References add_surface_ref(), free_surface(), make_neutral(), surf, and surface_.

Referenced by operator=().

◆ clone()

surface surface::clone ( ) const

Makes a copy of this surface.

The copy will be in the 'neutral' pixel format.

Note this is creates a new, duplicate surface in memory. Making a copy of this 'surface' object will not duplicate the surface itself since we only hold a pointer to the actual surface.

Definition at line 63 of file surface.cpp.

References neutral_pixel_format, surface(), and surface_.

Referenced by image::apply_light(), image::get_hexed(), image::get_tod_colored(), image::is_empty_hex(), image::load_image_sub_file(), and rotate_180_surface().

◆ free_surface()

void surface::free_surface ( )
private

Definition at line 77 of file surface.cpp.

References surface_.

Referenced by assign_surface_internal(), make_neutral(), operator=(), and ~surface().

◆ get()

SDL_Surface* surface::get ( ) const
inline

◆ is_neutral()

bool surface::is_neutral ( ) const

Check that the surface is neutral bpp 32.

The surface may have an empty alpha channel.

Returns
The status true if neutral, false if not.

Definition at line 40 of file surface.cpp.

References SDL_ALPHA_MASK, SDL_RED_MASK, and surface_.

Referenced by make_neutral().

◆ make_neutral()

surface & surface::make_neutral ( )

Converts this surface to a neutral format if it is not already.

Returns
A reference to this object for chaining convenience.

Definition at line 49 of file surface.cpp.

References free_surface(), is_neutral(), neutral_pixel_format, and surface_.

Referenced by assign_surface_internal(), and surface().

◆ operator SDL_Surface *()

surface::operator SDL_Surface * ( ) const
inline

Definition at line 95 of file surface.hpp.

References surface_.

◆ operator->()

SDL_Surface* surface::operator-> ( ) const
inline

Definition at line 99 of file surface.hpp.

References surface_.

◆ operator=() [1/2]

surface& surface::operator= ( const surface s)
inline

Definition at line 50 of file surface.hpp.

References assign_surface_internal(), and s.

◆ operator=() [2/2]

surface& surface::operator= ( surface &&  s)
inlinenoexcept

Definition at line 56 of file surface.hpp.

References free_surface(), s, and surface_.

Member Data Documentation

◆ neutral_pixel_format

const SDL_PixelFormat surface::neutral_pixel_format
staticprivate
Initial value:
= []() {
return *SDL_CreateRGBSurfaceWithFormat(0, 1, 1, 32, SDL_PIXELFORMAT_ARGB8888)->format;
}()

Definition at line 115 of file surface.hpp.

Referenced by clone(), make_neutral(), and surface().

◆ surface_

SDL_Surface* surface::surface_
private

The documentation for this class was generated from the following files: