bn::regular_bg_tiles_ptr class

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

Several regular_bg_tiles_ptr objects may own the same background tiles.

The background tiles are released when the last remaining regular_bg_tiles_ptr owning them is destroyed.

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

Public static functions

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

Constructors, destructors, conversion operators

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

Public functions

auto operator=(const regular_bg_tiles_ptr& other) -> regular_bg_tiles_ptr&
Copy assignment operator.
auto operator=(regular_bg_tiles_ptr&& other) -> regular_bg_tiles_ptr& noexcept
Move assignment operator.
auto id() const -> int
Returns the internal id.
auto cbb() const -> int
Returns the character base block of the referenced tiles.
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 regular_bg_tiles_item& tiles_item)
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 regular_bg_tiles_ptr was created with allocate or allocate_optional; bn::nullopt otherwise.
auto handle() const -> int
Returns the internal handle.
void swap(regular_bg_tiles_ptr& other)
Exchanges the contents of this regular_bg_tiles_ptr with those of the other one.

Friends

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

Function documentation

static optional<regular_bg_tiles_ptr> bn::regular_bg_tiles_ptr::find(const regular_bg_tiles_item& tiles_item)

Searches for a regular_bg_tiles_ptr which references the given tiles.

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

static regular_bg_tiles_ptr bn::regular_bg_tiles_ptr::create(const regular_bg_tiles_item& tiles_item)

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

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

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

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

Creates a regular_bg_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 regular_bg_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.

static optional<regular_bg_tiles_ptr> bn::regular_bg_tiles_ptr::create_optional(const regular_bg_tiles_item& tiles_item)

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

Parameters
tiles_item regular_bg_tiles_item which references the tiles to search or handle.
Returns regular_bg_tiles_ptr which references tiles_item.graphics_tiles_ref() if it has been found; otherwise it returns a regular_bg_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 regular_bg_tiles_ptr to avoid dangling references.

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

Creates a regular_bg_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 regular_bg_tiles_ptr which references a chunk of VRAM tiles not visible on the screen if it could be allocated; bn::nullopt otherwise.

bn::regular_bg_tiles_ptr::regular_bg_tiles_ptr(const regular_bg_tiles_ptr& other)

Copy constructor.

Parameters
other regular_bg_tiles_ptr to copy.

bn::regular_bg_tiles_ptr::regular_bg_tiles_ptr(regular_bg_tiles_ptr&& other) noexcept

Move constructor.

Parameters
other regular_bg_tiles_ptr to move.

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

Copy assignment operator.

Parameters
other regular_bg_tiles_ptr to copy.
Returns Reference to this.

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

Move assignment operator.

Parameters
other regular_bg_tiles_ptr to move.
Returns Reference to this.

void bn::regular_bg_tiles_ptr::set_tiles_ref(const regular_bg_tiles_item& tiles_item)

Sets the tiles to handle.

Parameters
tiles_item regular_bg_tiles_item which references the tiles to handle.

Remember that the background tiles system does not support multiple regular_bg_tiles_ptr items referencing to the same tiles.

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

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

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

Parameters
other regular_bg_tiles_ptr to exchange the contents with.

void swap(regular_bg_tiles_ptr& a, regular_bg_tiles_ptr& b)

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

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