graph.cpp
Go to the documentation of this file.
1 //
2 // Created by peter on 2021/7/22.
3 //
4 #include "rm_referee/ui/graph.h"
5 namespace rm_referee
6 {
7 Graph::Graph(const XmlRpc::XmlRpcValue& config, Base& base, int id) : base_(base)
8 {
9  config_.graphic_id[0] = static_cast<uint8_t>((id >> 0 & 0xFF));
10  config_.graphic_id[1] = static_cast<uint8_t>((id >> 8 & 0xFF));
11  config_.graphic_id[2] = static_cast<uint8_t>((id >> 16 & 0xFF));
12  if (config.hasMember("type"))
13  config_.graphic_type = getType(config["type"]);
14  else
15  {
17  }
18  if (config_.graphic_type == getType("string") || config_.graphic_type == getType("int_num") ||
19  config_.graphic_type == getType("float_num"))
20  {
21  if (config.hasMember("size"))
22  config_.start_angle = static_cast<int>(config["size"]);
23  }
24  else
25  {
26  if (config.hasMember("start_angle"))
27  config_.start_angle = static_cast<int>(config["start_angle"]);
28  }
29  if (config.hasMember("start_position"))
30  {
31  initPosition(config["start_position"], start_positions_);
32  if (!start_positions_.empty())
33  {
34  config_.start_x = start_positions_[0].first;
35  config_.start_y = start_positions_[0].second;
36  }
37  }
38  if (config.hasMember("end_position"))
39  {
40  initPosition(config["end_position"], end_positions_);
41  if (!end_positions_.empty())
42  {
43  config_.end_x = end_positions_[0].first;
44  config_.end_y = end_positions_[0].second;
45  }
46  }
47  if (config.hasMember("color"))
48  config_.color = getColor(config["color"]);
49  else
50  {
52  }
53  if (config.hasMember("end_angle"))
54  config_.end_angle = static_cast<int>(config["end_angle"]);
55  if (config.hasMember("radius"))
56  config_.radius = static_cast<int>(config["radius"]);
57  if (config.hasMember("width"))
58  config_.width = static_cast<int>(config["width"]);
59  if (config.hasMember("title"))
60  title_ = static_cast<std::string>(config["title"]);
61  if (config.hasMember("content"))
62  {
63  content_ = static_cast<std::string>(config["content"]);
64  if (!title_.empty() || !content_.empty())
65  config_.end_angle = static_cast<int>((title_ + content_).size());
66  }
68 }
69 
70 void Graph::updatePosition(int index)
71 {
72  if (start_positions_.size() > 1)
73  {
74  config_.start_x = start_positions_[index].first;
75  config_.start_y = start_positions_[index].second;
76  }
77  if (end_positions_.size() > 1)
78  {
79  config_.end_x = end_positions_[index].first;
80  config_.end_y = end_positions_[index].second;
81  }
82 }
83 
84 void Graph::initPosition(XmlRpc::XmlRpcValue value, std::vector<std::pair<int, int>>& positions)
85 {
86  if (value.size() != 0 && value[0].getType() == XmlRpc::XmlRpcValue::TypeArray)
87  {
88  for (int i = 0; i < value.size(); ++i)
89  initPosition(value[i], positions);
90  }
91  else
92  {
93  positions.push_back(std::pair<int, int>(static_cast<int>(value[0]), static_cast<int>(value[1])));
94  }
95 }
96 
97 rm_referee::GraphColor Graph::getColor(const std::string& color)
98 {
99  if (color == "main_color")
101  else if (color == "yellow")
103  else if (color == "green")
105  else if (color == "orange")
107  else if (color == "purple")
109  else if (color == "pink")
111  else if (color == "cyan")
113  else if (color == "black")
115  else
117 }
118 
119 rm_referee::GraphType Graph::getType(const std::string& type)
120 {
121  if (type == "rectangle")
123  else if (type == "circle")
125  else if (type == "ellipse")
127  else if (type == "arc")
129  else if (type == "string")
131  else if (type == "int_num")
133  else if (type == "float_num")
135  else if (type == "line")
137  else
139 }
140 
141 } // namespace rm_referee
rm_referee::WHITE
@ WHITE
Definition: protocol.h:161
XmlRpc::XmlRpcValue::size
int size() const
rm_referee::ARC
@ ARC
Definition: protocol.h:170
rm_referee::Graph::start_positions_
std::vector< std::pair< int, int > > start_positions_
Definition: graph.h:114
rm_referee::Graph::initPosition
void initPosition(XmlRpc::XmlRpcValue value, std::vector< std::pair< int, int >> &positions)
Definition: graph.cpp:84
rm_referee::Base
Definition: data.h:142
rm_referee::Graph::end_positions_
std::vector< std::pair< int, int > > end_positions_
Definition: graph.h:114
rm_referee
Definition: data.h:100
rm_referee::GraphConfig::start_x
uint32_t start_x
Definition: protocol.h:448
rm_referee::PURPLE
@ PURPLE
Definition: protocol.h:157
rm_referee::Graph::content_
std::string content_
Definition: graph.h:116
rm_referee::STRING
@ STRING
Definition: protocol.h:173
rm_referee::CYAN
@ CYAN
Definition: protocol.h:159
rm_referee::MAIN_COLOR
@ MAIN_COLOR
Definition: protocol.h:153
rm_referee::GraphConfig::end_angle
uint32_t end_angle
Definition: protocol.h:446
rm_referee::ORANGE
@ ORANGE
Definition: protocol.h:156
rm_referee::GraphConfig::graphic_type
uint32_t graphic_type
Definition: protocol.h:442
rm_referee::Graph::title_
std::string title_
Definition: graph.h:116
rm_referee::Graph::Graph
Graph(const XmlRpc::XmlRpcValue &config, Base &base, int id)
Definition: graph.cpp:7
rm_referee::GraphConfig::radius
uint32_t radius
Definition: protocol.h:450
rm_referee::LINE
@ LINE
Definition: protocol.h:166
rm_referee::Graph::config_
rm_referee::GraphConfig config_
Definition: graph.h:115
rm_referee::Graph::getType
rm_referee::GraphType getType(const std::string &type)
Definition: graph.cpp:119
rm_referee::GraphConfig::width
uint32_t width
Definition: protocol.h:447
rm_referee::Graph::updatePosition
void updatePosition(int index)
Definition: graph.cpp:70
rm_referee::GraphConfig::operate_type
uint32_t operate_type
Definition: protocol.h:441
rm_referee::GraphConfig::graphic_id
uint8_t graphic_id[3]
Definition: protocol.h:440
rm_referee::CIRCLE
@ CIRCLE
Definition: protocol.h:168
rm_referee::FLOAT_NUM
@ FLOAT_NUM
Definition: protocol.h:171
rm_referee::GraphConfig::end_x
uint32_t end_x
Definition: protocol.h:451
rm_referee::PINK
@ PINK
Definition: protocol.h:158
rm_referee::GREEN
@ GREEN
Definition: protocol.h:155
XmlRpc::XmlRpcValue::getType
const Type & getType() const
rm_referee::GraphConfig::end_y
uint32_t end_y
Definition: protocol.h:452
rm_referee::DELETE
@ DELETE
Definition: protocol.h:148
rm_referee::RECTANGLE
@ RECTANGLE
Definition: protocol.h:167
XmlRpc::XmlRpcValue::TypeArray
TypeArray
XmlRpc::XmlRpcValue::hasMember
bool hasMember(const std::string &name) const
rm_referee::INT_NUM
@ INT_NUM
Definition: protocol.h:172
rm_referee::GraphConfig::start_y
uint32_t start_y
Definition: protocol.h:449
graph.h
rm_referee::ELLIPSE
@ ELLIPSE
Definition: protocol.h:169
rm_referee::BLACK
@ BLACK
Definition: protocol.h:160
rm_referee::GraphConfig::color
uint32_t color
Definition: protocol.h:444
rm_referee::Graph::getColor
rm_referee::GraphColor getColor(const std::string &color)
Definition: graph.cpp:97
rm_referee::GraphType
GraphType
Definition: protocol.h:164
rm_referee::YELLOW
@ YELLOW
Definition: protocol.h:154
rm_referee::GraphColor
GraphColor
Definition: protocol.h:151
XmlRpc::XmlRpcValue
rm_referee::GraphConfig::start_angle
uint32_t start_angle
Definition: protocol.h:445


rm_referee
Author(s): Qiayuan Liao
autogenerated on Tue May 6 2025 02:23:49