infinipaint/src/BookmarkManager.hpp

42 lines
1.1 KiB
C++
Raw Normal View History

2025-07-06 20:43:53 +03:00
#pragma once
#include <Helpers/Serializers.hpp>
#include <cereal/types/string.hpp>
#include "SharedTypes.hpp"
#include "CoordSpaceHelper.hpp"
struct Bookmark {
CoordSpaceHelper coords;
Vector<int32_t, 2> windowSize;
template <class Archive> void serialize(Archive& a) {
a(coords, windowSize);
}
};
class World;
class BookmarkManager {
public:
BookmarkManager(World& w);
void init_client_callbacks();
void add_bookmark(const std::string& name);
void remove_bookmark(const std::string& name);
void jump_to_bookmark(const std::string& name);
const std::unordered_map<std::string, Bookmark>& bookmark_list();
template <typename Archive> void save(Archive& a) const {
2025-07-06 20:43:53 +03:00
a(bookmarks);
}
template <typename Archive> void load(Archive& a) {
a(bookmarks);
changed = true;
}
2025-07-06 20:43:53 +03:00
const std::vector<std::string>& sorted_names();
private:
bool changed = true;
std::vector<std::string> sortedNames;
std::unordered_map<std::string, Bookmark> bookmarks;
World& world;
};