20 {
"r",
static_cast<int>(color.Value.x * 255.0F) },
21 {
"g",
static_cast<int>(color.Value.y * 255.0F) },
22 {
"b",
static_cast<int>(color.Value.z * 255.0F) },
23 {
"a",
static_cast<int>(color.Value.w * 255.0F) },
103 {
"LineWeight", style.LineWeight },
104 {
"MarkerSize", style.MarkerSize },
105 {
"MarkerWeight", style.MarkerWeight },
106 {
"FillAlpha", style.FillAlpha },
107 {
"ErrorBarSize", style.ErrorBarSize },
108 {
"ErrorBarWeight", style.ErrorBarWeight },
109 {
"DigitalBitHeight", style.DigitalBitHeight },
110 {
"DigitalBitGap", style.DigitalBitGap },
111 {
"PlotBorderSize", style.PlotBorderSize },
112 {
"MinorAlpha", style.MinorAlpha },
113 {
"MajorTickLen", style.MajorTickLen },
114 {
"MinorTickLen", style.MinorTickLen },
115 {
"MajorTickSize", style.MajorTickSize },
116 {
"MinorTickSize", style.MinorTickSize },
117 {
"MajorGridSize", style.MajorGridSize },
118 {
"MinorGridSize", style.MinorGridSize },
119 {
"PlotDefaultSize", style.PlotDefaultSize },
120 {
"PlotMinSize", style.PlotMinSize },
121 {
"PlotPadding", style.PlotPadding },
122 {
"LabelPadding", style.LabelPadding },
123 {
"LegendPadding", style.LegendPadding },
124 {
"LegendInnerPadding", style.LegendInnerPadding },
125 {
"LegendSpacing", style.LegendSpacing },
126 {
"MousePosPadding", style.MousePosPadding },
127 {
"AnnotationPadding", style.AnnotationPadding },
128 {
"FitPadding", style.FitPadding },
131 for (
int i = 0; i < ImPlotCol_COUNT; i++)
133 if (ImPlot::IsColorAuto(i))
135 j[
"Colors"][ImPlot::GetStyleColorName(i)][
"col"] =
"Auto";
139 j[
"Colors"][ImPlot::GetStyleColorName(i)][
"col"] = ImPlot::GetStyleColorVec4(i);
143 j[
"Colormap"][
"active"] = style.Colormap;
145 for (
int i = 16; i < ImPlot::GetCurrentContext()->ColormapData.Count; ++i)
147 j[
"Colormap"][
"maps"][
static_cast<size_t>(i - 16)][
"name"] = ImPlot::GetColormapName(i);
148 j[
"Colormap"][
"maps"][
static_cast<size_t>(i - 16)][
"qualitative"] = ImPlot::GetCurrentContext()->ColormapData.IsQual(i);
150 for (
int c = 0; c < ImPlot::GetCurrentContext()->ColormapData.GetKeyCount(i); ++c)
152 j[
"Colormap"][
"maps"][
static_cast<size_t>(i - 16)][
"keys"][
static_cast<size_t>(c)] = ImGui::ColorConvertU32ToFloat4(ImPlot::GetCurrentContext()->ColormapData.GetKeyColor(i, c));
158 if (j.contains(
"LineWeight"))
160 j.at(
"LineWeight").get_to(style.LineWeight);
162 if (j.contains(
"LineWeight"))
164 j.at(
"LineWeight").get_to(style.LineWeight);
166 if (j.contains(
"MarkerSize"))
168 j.at(
"MarkerSize").get_to(style.MarkerSize);
170 if (j.contains(
"MarkerWeight"))
172 j.at(
"MarkerWeight").get_to(style.MarkerWeight);
174 if (j.contains(
"FillAlpha"))
176 j.at(
"FillAlpha").get_to(style.FillAlpha);
178 if (j.contains(
"ErrorBarSize"))
180 j.at(
"ErrorBarSize").get_to(style.ErrorBarSize);
182 if (j.contains(
"ErrorBarWeight"))
184 j.at(
"ErrorBarWeight").get_to(style.ErrorBarWeight);
186 if (j.contains(
"DigitalBitHeight"))
188 j.at(
"DigitalBitHeight").get_to(style.DigitalBitHeight);
190 if (j.contains(
"DigitalBitGap"))
192 j.at(
"DigitalBitGap").get_to(style.DigitalBitGap);
194 if (j.contains(
"PlotBorderSize"))
196 j.at(
"PlotBorderSize").get_to(style.PlotBorderSize);
198 if (j.contains(
"MinorAlpha"))
200 j.at(
"MinorAlpha").get_to(style.MinorAlpha);
202 if (j.contains(
"MajorTickLen"))
204 j.at(
"MajorTickLen").get_to(style.MajorTickLen);
206 if (j.contains(
"MinorTickLen"))
208 j.at(
"MinorTickLen").get_to(style.MinorTickLen);
210 if (j.contains(
"MajorTickSize"))
212 j.at(
"MajorTickSize").get_to(style.MajorTickSize);
214 if (j.contains(
"MinorTickSize"))
216 j.at(
"MinorTickSize").get_to(style.MinorTickSize);
218 if (j.contains(
"MajorGridSize"))
220 j.at(
"MajorGridSize").get_to(style.MajorGridSize);
222 if (j.contains(
"MinorGridSize"))
224 j.at(
"MinorGridSize").get_to(style.MinorGridSize);
226 if (j.contains(
"PlotDefaultSize"))
228 j.at(
"PlotDefaultSize").get_to(style.PlotDefaultSize);
230 if (j.contains(
"PlotMinSize"))
232 j.at(
"PlotMinSize").get_to(style.PlotMinSize);
234 if (j.contains(
"PlotPadding"))
236 j.at(
"PlotPadding").get_to(style.PlotPadding);
238 if (j.contains(
"LabelPadding"))
240 j.at(
"LabelPadding").get_to(style.LabelPadding);
242 if (j.contains(
"LegendPadding"))
244 j.at(
"LegendPadding").get_to(style.LegendPadding);
246 if (j.contains(
"LegendInnerPadding"))
248 j.at(
"LegendInnerPadding").get_to(style.LegendInnerPadding);
250 if (j.contains(
"LegendSpacing"))
252 j.at(
"LegendSpacing").get_to(style.LegendSpacing);
254 if (j.contains(
"MousePosPadding"))
256 j.at(
"MousePosPadding").get_to(style.MousePosPadding);
258 if (j.contains(
"AnnotationPadding"))
260 j.at(
"AnnotationPadding").get_to(style.AnnotationPadding);
262 if (j.contains(
"FitPadding"))
264 j.at(
"FitPadding").get_to(style.FitPadding);
267 if (j.contains(
"Colors"))
269 for (
int i = 0; i < ImPlotCol_COUNT; i++)
271 if (j.at(
"Colors").contains(ImPlot::GetStyleColorName(i)))
273 if (j.at(
"Colors").at(ImPlot::GetStyleColorName(i)).contains(
"col"))
275 if (j.at(
"Colors").at(ImPlot::GetStyleColorName(i)).at(
"col").is_string()
276 && j.at(
"Colors").at(ImPlot::GetStyleColorName(i)).at(
"col").get<std::string>() ==
"Auto")
278 style.Colors[i] = IMPLOT_AUTO_COL;
282 j.at(
"Colors").at(ImPlot::GetStyleColorName(i)).at(
"col").get_to(style.Colors[i]);
288 LOG_WARN(
"Problem reading the ImPlot style: The color '{}' was not found in the json file.", ImPlot::GetStyleColorName(i));
293 if (j.contains(
"Colormap"))
295 if (j.at(
"Colormap").contains(
"maps"))
297 for (
const auto& map : j.at(
"Colormap").at(
"maps"))
299 std::vector<ImVec4> custom;
300 for (
const auto& key : map.at(
"keys"))
302 custom.push_back(key.get<ImVec4>());
304 auto name = map.at(
"name").get<std::string>();
305 auto qual = map.at(
"qualitative").get<
bool>();
307 if (ImPlot::GetCurrentContext()->ColormapData.GetIndex(name.c_str()) == -1 && custom.size() > 1)
309 ImPlot::AddColormap(name.c_str(), custom.data(),
static_cast<int>(custom.size()), qual);
313 if (j.at(
"Colormap").contains(
"active"))
315 j.at(
"Colormap").at(
"active").get_to(style.Colormap);