bn::sprite_tiles_ptr class

std::shared_ptr like smart pointer that retains shared ownership of the tiles of a sprite.

Several sprite_tiles_ptr objects may own the same sprite tiles.

The sprite tiles are released when the last remaining sprite_tiles_ptr owning them is destroyed.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

Public static functions

static auto find(const sprite_tiles_item& tiles_item) -> optional<sprite_tiles_ptr>
Searches for a sprite_tiles_ptr which references the given tiles.
static auto find(const sprite_tiles_item& tiles_item, int graphics_index) -> optional<sprite_tiles_ptr>
Searches for a sprite_tiles_ptr which references the given tiles.
static auto create(const sprite_tiles_item& tiles_item) -> sprite_tiles_ptr
Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.
static auto create(const sprite_tiles_item& tiles_item, int graphics_index) -> sprite_tiles_ptr
Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.
static auto allocate(int tiles_count, bpp_mode bpp) -> sprite_tiles_ptr
Creates a sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.
static auto create_optional(const sprite_tiles_item& tiles_item) -> optional<sprite_tiles_ptr>
Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.
static auto create_optional(const sprite_tiles_item& tiles_item, int graphics_index) -> optional<sprite_tiles_ptr>
Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.
static auto allocate_optional(int tiles_count, bpp_mode bpp) -> optional<sprite_tiles_ptr>
Creates a sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.

Constructors, destructors, conversion operators

sprite_tiles_ptr(const sprite_tiles_ptr& other)
Copy constructor.
sprite_tiles_ptr(sprite_tiles_ptr&& other) noexcept
Move constructor.
~sprite_tiles_ptr()
Releases the referenced sprite tiles if no more sprite_tiles_ptr objects reference to them.

Public functions

auto operator=(const sprite_tiles_ptr& other) -> sprite_tiles_ptr&
Copy assignment operator.
auto operator=(sprite_tiles_ptr&& other) -> sprite_tiles_ptr& noexcept
Move assignment operator.
auto id() const -> int
Returns the internal id.
auto tiles_count() const -> int
Returns the referenced number of tiles.
auto compression() const -> compression_type
Returns the compression of the referenced tiles.
auto tiles_ref() const -> optional<span<const tile>>
Returns the referenced tiles unless it was created with allocate or allocate_optional. In that case, it returns bn::nullopt.
void set_tiles_ref(const sprite_tiles_item& tiles_item)
Sets the tiles to handle.
void set_tiles_ref(const sprite_tiles_item& tiles_item, int graphics_index)
Sets the tiles to handle.
void reload_tiles_ref()
Uploads the referenced tiles to VRAM again to make visible the possible changes in them.
auto vram() -> optional<span<tile>>
Returns the allocated memory in VRAM if this sprite_tiles_ptr was created with allocate or allocate_optional; bn::nullopt otherwise.
auto handle() const -> int
Returns the internal handle.
void swap(sprite_tiles_ptr& other)
Exchanges the contents of this sprite_tiles_ptr with those of the other one.

Friends

void swap(sprite_tiles_ptr& a, sprite_tiles_ptr& b)
Exchanges the contents of a sprite_tiles_ptr with those of another one.
auto operator==(const sprite_tiles_ptr& a, const sprite_tiles_ptr& b) -> bool defaulted
Default equal operator.

Function documentation

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::find(const sprite_tiles_item& tiles_item)

Searches for a sprite_tiles_ptr which references the given tiles.

Parameters
tiles_item sprite_tiles_item which references the tiles to search.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref() if it has been found; bn::nullopt otherwise.

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::find(const sprite_tiles_item& tiles_item, int graphics_index)

Searches for a sprite_tiles_ptr which references the given tiles.

Parameters
tiles_item sprite_tiles_item which references the tiles to search.
graphics_index Index of the tile set to search in sprite_tiles_item.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref(graphics_index) if it has been found; bn::nullopt otherwise.

static sprite_tiles_ptr bn::sprite_tiles_ptr::create(const sprite_tiles_item& tiles_item)

Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.

Parameters
tiles_item sprite_tiles_item which references the tiles to search or handle.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref() if it has been found; otherwise it returns a sprite_tiles_ptr which references them.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static sprite_tiles_ptr bn::sprite_tiles_ptr::create(const sprite_tiles_item& tiles_item, int graphics_index)

Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.

Parameters
tiles_item sprite_tiles_item which references the tiles to search or handle.
graphics_index Index of the tile set to search in sprite_tiles_item.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref(graphics_index) if it has been found; otherwise it returns a sprite_tiles_ptr which references them.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static sprite_tiles_ptr bn::sprite_tiles_ptr::allocate(int tiles_count, bpp_mode bpp)

Creates a sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.

Parameters
tiles_count Number of tiles to allocate.
bpp Bits per pixel of the tiles to allocate.
Returns sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::create_optional(const sprite_tiles_item& tiles_item)

Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.

Parameters
tiles_item sprite_tiles_item which references the tiles to search or handle.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref() if it has been found; otherwise it returns a sprite_tiles_ptr which references them if it could be allocated; bn::nullopt otherwise.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::create_optional(const sprite_tiles_item& tiles_item, int graphics_index)

Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.

Parameters
tiles_item sprite_tiles_item which references the tiles to search or handle.
graphics_index Index of the tile set to search in sprite_tiles_item.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref(graphics_index) if it has been found; otherwise it returns a sprite_tiles_ptr which references them if it could be allocated; bn::nullopt otherwise.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::allocate_optional(int tiles_count, bpp_mode bpp)

Creates a sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.

Parameters
tiles_count Number of tiles to allocate.
bpp Bits per pixel of the tiles to allocate.
Returns sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen if it could be allocated; bn::nullopt otherwise.

bn::sprite_tiles_ptr::sprite_tiles_ptr(const sprite_tiles_ptr& other)

Copy constructor.

Parameters
other sprite_tiles_ptr to copy.

bn::sprite_tiles_ptr::sprite_tiles_ptr(sprite_tiles_ptr&& other) noexcept

Move constructor.

Parameters
other sprite_tiles_ptr to move.

sprite_tiles_ptr& bn::sprite_tiles_ptr::operator=(const sprite_tiles_ptr& other)

Copy assignment operator.

Parameters
other sprite_tiles_ptr to copy.
Returns Reference to this.

sprite_tiles_ptr& bn::sprite_tiles_ptr::operator=(sprite_tiles_ptr&& other) noexcept

Move assignment operator.

Parameters
other sprite_tiles_ptr to move.
Returns Reference to this.

void bn::sprite_tiles_ptr::set_tiles_ref(const sprite_tiles_item& tiles_item)

Sets the tiles to handle.

Parameters
tiles_item sprite_tiles_item which references the tiles to handle.

Remember that the sprite tiles system does not support multiple sprite_tiles_ptr items referencing to the same tiles.

Remember also that the tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

void bn::sprite_tiles_ptr::set_tiles_ref(const sprite_tiles_item& tiles_item, int graphics_index)

Sets the tiles to handle.

Parameters
tiles_item sprite_tiles_item which references the tiles to handle.
graphics_index Index of the tile set to reference in sprite_tiles_item.

Remember that the sprite tiles system does not support multiple sprite_tiles_ptr items referencing to the same tiles.

Remember also that the tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

void bn::sprite_tiles_ptr::swap(sprite_tiles_ptr& other)

Exchanges the contents of this sprite_tiles_ptr with those of the other one.

Parameters
other sprite_tiles_ptr to exchange the contents with.

void swap(sprite_tiles_ptr& a, sprite_tiles_ptr& b)

Exchanges the contents of a sprite_tiles_ptr with those of another one.

Parameters
a First sprite_tiles_ptr to exchange the contents with.
b Second sprite_tiles_ptr to exchange the contents with.