2024-11-02 23:12:38 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
2024-12-07 03:44:03 +01:00
|
|
|
#include "config-node.h"
|
2024-11-02 23:12:38 +01:00
|
|
|
#include "midi-node.h"
|
|
|
|
|
#include "graph-item.h"
|
|
|
|
|
#include "node.h"
|
|
|
|
|
#include "edge.h"
|
|
|
|
|
|
|
|
|
|
#include "datatypes.h"
|
2024-11-03 03:48:49 +01:00
|
|
|
#include "signal.h"
|
2024-11-02 23:12:38 +01:00
|
|
|
|
2024-11-03 03:48:49 +01:00
|
|
|
#include <iostream>
|
2024-11-02 23:12:38 +01:00
|
|
|
#include <memory>
|
|
|
|
|
|
2024-11-03 03:48:49 +01:00
|
|
|
typedef std::shared_ptr<VISEQ::GRAPH::GraphItem> SPTR_GraphItem;
|
|
|
|
|
typedef std::vector<SPTR_GraphItem> VEC_SPTR_GraphItem;
|
2024-11-02 23:12:38 +01:00
|
|
|
|
2026-01-12 00:16:36 +01:00
|
|
|
//namespace nlohmann {
|
|
|
|
|
// template <typename T>
|
|
|
|
|
// struct adl_serializer<std::shared_ptr<T>> {
|
|
|
|
|
// static void to_json(json& j, const std::shared_ptr<T>& opt) {
|
|
|
|
|
// if (opt) {
|
|
|
|
|
// j = *opt;
|
|
|
|
|
// } else {
|
|
|
|
|
// j = nullptr;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// static void from_json(const json& j, std::shared_ptr<T>& opt) {
|
|
|
|
|
// if (j.is_null()) {
|
|
|
|
|
// opt = nullptr;
|
|
|
|
|
// } else {
|
|
|
|
|
// opt.reset(new T(j.get<T>()));
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// };
|
|
|
|
|
//}
|
2024-11-03 03:48:49 +01:00
|
|
|
|
|
|
|
|
namespace VISEQ::GRAPH {
|
|
|
|
|
inline void to_json(json& j, const GraphItem& G){
|
2024-11-03 15:15:42 +01:00
|
|
|
std::cout << "Movable" << std::endl;
|
2024-11-24 03:08:06 +01:00
|
|
|
j = json{{"id", G.id}, {"type", G.gItemType}};
|
2024-11-03 03:48:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline void to_json(json& j, const SPTR_GraphItem& G){
|
|
|
|
|
j = *G;
|
|
|
|
|
}
|
2024-11-02 23:12:38 +01:00
|
|
|
}
|
|
|
|
|
|
2024-11-03 03:48:49 +01:00
|
|
|
namespace VISEQ::BASE{
|
|
|
|
|
inline void to_json(json& j, const Movable& G){
|
2024-11-03 15:15:42 +01:00
|
|
|
std::cout << "Movable" << std::endl;
|
2024-11-03 03:48:49 +01:00
|
|
|
j = json{{"position", G.position}};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline void to_json(json& j, const std::shared_ptr<Movable>& G){
|
|
|
|
|
j = *G;
|
|
|
|
|
}
|
2024-11-03 15:15:42 +01:00
|
|
|
|
|
|
|
|
inline void from_json(const json& j, Movable& G){
|
|
|
|
|
std::cout << "Movable" << std::endl;
|
2024-12-08 02:25:57 +01:00
|
|
|
j.at("position").get_to<Vec2Df>(G.position);
|
2024-11-03 15:15:42 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline void from_json(json& j, const std::shared_ptr<Movable>& G){
|
2024-12-08 02:25:57 +01:00
|
|
|
j = *G;
|
2024-11-03 15:15:42 +01:00
|
|
|
}
|
2024-11-02 23:12:38 +01:00
|
|
|
}
|
|
|
|
|
|
2024-11-03 03:48:49 +01:00
|
|
|
namespace VISEQ::SIGNAL{
|
2026-01-12 00:16:36 +01:00
|
|
|
// inline void to_json(json& j, const Signal& G){
|
|
|
|
|
// std::map<std::string, int> fc = {{"r",G.color.r},{"g",G.color.g},{"b",G.color.b},{"a",G.color.a}};
|
|
|
|
|
// j = json{{"color",fc},{"position", G.position},{"radius",G.radius},{"start",G.start.lock()->id},{"next",G.next.lock()->id},{"last",G.last.lock()->id},{"speed",G.speed},{"midi_note_offset",G.midi_note_offset},{"midi_cc_offset",G.midi_cc_offset},{"multiplier",G.multiplier}};
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// inline void from_json(const json& j, Signal& S){
|
|
|
|
|
//
|
|
|
|
|
// Color c;
|
|
|
|
|
// c.r = j.at("color")["r"].get<int>();
|
|
|
|
|
// c.g = j.at("color")["g"].get<int>();
|
|
|
|
|
// c.b = j.at("color")["b"].get<int>();
|
|
|
|
|
// c.a = j.at("color")["a"].get<int>();
|
|
|
|
|
//
|
|
|
|
|
// j.at("position").get_to<Vec2Df>(S.position);
|
|
|
|
|
// j.at("speed").get_to<float>(S.speed);
|
|
|
|
|
// j.at("radius").get_to<float>(S.radius);
|
|
|
|
|
// j.at("midi_note_offset").get_to(S.midi_note_offset);
|
|
|
|
|
// j.at("midi_cc_offset").get_to(S.midi_cc_offset);
|
|
|
|
|
//
|
|
|
|
|
// S.color = c;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// inline void to_json(json& j, const std::shared_ptr<Signal>& G){
|
|
|
|
|
// j = *G;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// inline void from_json(const json& j, std::shared_ptr<Signal>& S){
|
|
|
|
|
// S.reset(new Signal(j.get<Signal>()));
|
|
|
|
|
// }
|
2024-11-02 23:12:38 +01:00
|
|
|
}
|
2024-11-04 01:00:59 +01:00
|
|
|
|
|
|
|
|
|