2#ifndef LIBSBX_GRAPHICS_VIEWPORT_REGISTRY_HPP_
3#define LIBSBX_GRAPHICS_VIEWPORT_REGISTRY_HPP_
6#include <unordered_map>
7#include <unordered_set>
10#include <libsbx/math/vector2.hpp>
12#include <libsbx/signals/signal.hpp>
14namespace sbx::graphics {
22 auto declare(std::string name,
const math::vector2u& initial_size) ->
void {
23 _sizes.insert_or_assign(name, initial_size);
24 _dirty.insert(std::move(name));
27 auto resize(
const std::string& name,
const math::vector2u& size) ->
bool {
28 auto entry = _sizes.find(name);
30 if (entry == _sizes.end()) {
31 _sizes.emplace(name, size);
33 _on_changed.emit(name, size);
38 if (entry->second == size) {
44 _on_changed.emit(name, size);
50 if (
auto entry = _sizes.find(name); entry != _sizes.end()) {
57 auto contains(
const std::string& name)
const ->
bool {
58 return _sizes.find(name) != _sizes.end();
61 auto take_dirty() -> std::vector<std::string> {
62 auto result = std::vector<std::string>{_dirty.begin(), _dirty.end()};
74 std::unordered_map<std::string, math::vector2u> _sizes;
75 std::unordered_set<std::string> _dirty;
Definition: viewport_registry.hpp:16
A vector in two-dimensional space.
Definition: vector2.hpp:28
Definition: signal.hpp:18