summaryrefslogtreecommitdiffhomepage
path: root/serialize/wall-atlas.hpp
blob: 295393503b6d4b52cd3b2282ad1c87dbaa4be8d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
#include "src/wall-atlas.hpp"
#include <Corrade/Containers/Array.h>
#include <nlohmann/json_fwd.hpp>

namespace floormat::Wall::detail {

using nlohmann::json;

[[nodiscard]] Array<Frame> read_all_frames(const json& jroot);
[[nodiscard]] Group read_group_metadata(const json& jgroup);
[[nodiscard]] Direction read_direction_metadata(const json& jroot, Direction_ dir);
Info read_info_header(const json& jroot);

void write_all_frames(json& jroot, ArrayView<const Frame> array);
void write_group_metadata(json& jgroup, const Group& val);
void write_direction_metadata(json& jdir, const Direction& dir);
void write_all_directions(json& jroot, const wall_atlas& a);
void write_info_header(json& jroot, const Info& info);
bool is_direction_defined(const Direction& dir);

} // namespace floormat::Wall::detail