FastLED 3.9.15
Loading...
Searching...
No Matches

◆ ParseJson() [2/2]

bool fl::ScreenMap::ParseJson ( const char * jsonStrScreenMap,
FixedMap< Str, ScreenMap, 16 > * segmentMaps,
Str * err = nullptr )
static

Definition at line 51 of file screenmap.cpp.

52 {
53#if !FASTLED_ENABLE_JSON
54 if (err) {
55 *err = "JSON not enabled";
56 }
57 return false;
58#else
59 JsonDocument doc;
60 Str _err;
61 if (!err) {
62 err = &_err;
63 }
64
65 bool ok = parseJson(jsonStrScreenMap, &doc, err);
66 if (!ok) {
67 FASTLED_WARN("Failed to parse json: " << err->c_str());
68 return false;
69 }
70 auto map = doc["map"];
71 for (auto kv : map.as<FLArduinoJson::JsonObject>()) {
72 auto segment = kv.value();
73 auto x = segment["x"];
74 auto y = segment["y"];
75 auto obj = segment["diameter"];
76 float diameter = -1.0f;
77 if (obj.is<float>()) {
78 float d = obj.as<float>();
79 if (d > 0.0f) {
80 diameter = d;
81 }
82 }
83 auto n = x.size();
84 ScreenMap segment_map(n, diameter);
85 for (uint16_t j = 0; j < n; j++) {
86 segment_map.set(j, vec2f{x[j], y[j]});
87 }
88 segmentMaps->insert(kv.key().c_str(), segment_map);
89 }
90 return true;
91#endif
92}
int y
Definition Audio.ino:72
int x
Definition Audio.ino:71
ScreenMap()=default
long map(long x, long in_min, long in_max, long out_min, long out_max)
bool parseJson(const char *json, fl::JsonDocument *doc, Str *_error)
Definition json.cpp:6
vec2< float > vec2f
Definition geometry.h:301
#define FASTLED_WARN
Definition warn.h:7

References ScreenMap(), fl::StrN< SIZE >::c_str(), FASTLED_WARN, fl::FixedMap< Key, Value, N >::insert(), fl::parseJson(), set(), x, and y.

Referenced by ParseJson(), fl::FileSystem::readScreenMap(), fl::FileSystem::readScreenMaps(), and setup().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: