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

◆ toJson()

void fl::ScreenMap::toJson ( const fl::fl_map< string, ScreenMap > & segmentMaps,
fl::Json * doc )
static

Definition at line 242 of file screenmap.cpp.

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 // Create the root object
255 *doc = fl::Json::object();
256
257 // Create the map object
258 fl::Json mapObj = fl::Json::object();
259
260 // Populate the map object with segments
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 // Create x array
272 fl::Json xArray = fl::Json::array();
273 for (u16 i = 0; i < segment.getLength(); i++) {
274 xArray.push_back(fl::Json(static_cast<double>(segment[i].x)));
275 }
276
277 // Create y array
278 fl::Json yArray = fl::Json::array();
279 for (u16 i = 0; i < segment.getLength(); i++) {
280 yArray.push_back(fl::Json(static_cast<double>(segment[i].y)));
281 }
282
283 // Create segment object
284 fl::Json segmentObj = fl::Json::object();
285 // Add arrays and diameter to segment object
286 segmentObj.set("x", xArray);
287 segmentObj.set("y", yArray);
288 segmentObj.set("diameter", fl::Json(static_cast<double>(diameter)));
289
290 // Add segment to map object
291 mapObj.set(name, segmentObj);
292 }
293
294 // Add map object to root
295 doc->set("map", mapObj);
296
297 // Debug output
298 fl::string debugStr = doc->to_string();
299 FL_WARN("ScreenMap::toJson generated JSON: " << debugStr);
300#endif
301}
int y
Definition simple.h:93
int x
Definition simple.h:92
fl::string to_string() const
Definition json.h:2120
static Json object()
Definition json.h:2141
void set(const fl::string &key, const Json &value)
Definition json.h:2149
void push_back(const Json &value)
Definition json.h:2172
static Json array()
Definition json.h:2137
#define FL_WARN
Definition warn.h:12

References fl::Json::array(), FL_WARN, fl::Json::object(), fl::Json::push_back(), fl::Json::set(), fl::Json::to_string(), x, and y.

Referenced by toJsonStr().

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