Skip to content
Snippets Groups Projects
Commit 666ef98c authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

ArViz Intro: show flag combinations

parent e7a961ef
No related branches found
No related tags found
No related merge requests found
#include "json_elements.h"
#include <boost/algorithm/string.hpp>
#include <ArmarXCore/core/exceptions/local/ExpressionException.h>
#include "json_base.h"
......@@ -199,13 +201,44 @@ namespace armarx::viz
}
namespace data::ModelDrawStyle
{
std::string to_flag_names(const int drawStyle)
{
std::vector<std::string> flag_names;
for (int flag : names.values())
{
if (drawStyle == flag // Necessary if flag is 0
|| drawStyle & flag)
{
flag_names.push_back(names.to_name(flag));
}
}
return boost::join(flag_names, " | ");
}
int from_flag_names(const std::string& flagString)
{
std::vector<std::string> split;
boost::split(split, flagString, boost::is_any_of("|"));
int flag = 0;
for (auto& s : split)
{
boost::algorithm::trim(s);
flag |= names.from_name(s);
}
return flag;
}
}
void data::to_json(nlohmann::json& j, const ElementObject& object)
{
json::to_json_base(j, object);
j["project"] = object.project;
j["filename"] = object.filename;
j["drawStyle"] = ModelDrawStyle::names.to_name(object.drawStyle);
j["drawStyle"] = ModelDrawStyle::to_flag_names(object.drawStyle) + " (" + std::to_string(object.drawStyle) + ")";
j[json::meta::KEY]["drawStyle"] = json::meta::READ_ONLY;
}
void data::from_json(const nlohmann::json& j, ElementObject& object)
......@@ -213,7 +246,7 @@ namespace armarx::viz
json::from_json_base(j, object);
object.project = j.at("project");
object.filename = j.at("filename");
object.drawStyle = ModelDrawStyle::names.from_name(j.at("drawStyle"));
object.drawStyle = ModelDrawStyle::from_flag_names(j.at("drawStyle"));
}
......@@ -224,7 +257,7 @@ namespace armarx::viz
j["filename"] = robot.filename;
j["jointValues"] = robot.jointValues;
j["drawStyle"] = ModelDrawStyle::names.to_name(robot.drawStyle);
j["drawStyle"] = ModelDrawStyle::to_flag_names(robot.drawStyle);
j[json::meta::KEY]["drawStyle"] = json::meta::READ_ONLY;
}
void data::from_json(const nlohmann::json& j, ElementRobot& robot)
......@@ -233,7 +266,7 @@ namespace armarx::viz
robot.project = j.at("project");
robot.filename = j.at("filename");
robot.jointValues = j.at("jointValues").get<armarx::StringFloatDictionary>();
robot.drawStyle = ModelDrawStyle::names.from_name(j.at("drawStyle"));
robot.drawStyle = ModelDrawStyle::from_flag_names(j.at("drawStyle"));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment