243 {
244
245#if FASTLED_NO_JSON
246 FL_WARN(
"ScreenMap::toJson called with FASTLED_NO_JSON");
247 return;
248#else
249 if (!doc) {
250 FL_WARN(
"ScreenMap::toJson called with nullptr doc");
251 return;
252 }
253
254
256
257
259
260
261 for (const auto& kv : segmentMaps) {
262 if (kv.second.getLength() == 0) {
263 FL_WARN(
"ScreenMap::toJson called with empty segment: " << fl::string(kv.first));
264 continue;
265 }
266
267 auto& name = kv.first;
268 auto& segment = kv.second;
269 float diameter = segment.getDiameter();
270
271
273 for (u16 i = 0; i < segment.getLength(); i++) {
274 xArray.
push_back(fl::Json(
static_cast<double>(segment[i].
x)));
275 }
276
277
279 for (u16 i = 0; i < segment.getLength(); i++) {
280 yArray.
push_back(fl::Json(
static_cast<double>(segment[i].
y)));
281 }
282
283
285
286 segmentObj.
set(
"x", xArray);
287 segmentObj.
set(
"y", yArray);
288 segmentObj.
set(
"diameter", fl::Json(
static_cast<double>(diameter)));
289
290
291 mapObj.
set(name, segmentObj);
292 }
293
294
295 doc->
set(
"map", mapObj);
296
297
299 FL_WARN(
"ScreenMap::toJson generated JSON: " << debugStr);
300#endif
301}
fl::string to_string() const
void set(const fl::string &key, const Json &value)
void push_back(const Json &value)