Visu.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @author Rainer Kartmann ( rainer dot kartmann at kit dot edu )
17  * @date 2021
18  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19  * GNU General Public License
20  */
21 
22 #pragma once
23 
24 #include <optional>
25 #include <string>
26 #include <vector>
27 
28 #include <SimoxUtility/color/Color.h>
29 
31 
34 
35 namespace armarx::viz
36 {
37  class Arrow;
38  class Layer;
39  class Pose;
40 } // namespace armarx::viz
41 
43 {
44 
45  namespace visu
46  {
48  {
50  const std::vector<ObjectInfo>& info;
51  };
52  } // namespace visu
53 
54  struct VertexVisu
55 
56  {
57  struct Pose
58  {
59  float scale = 1.0;
60 
61  viz::Pose draw(const std::string& name, const core::Pose& pose) const;
62  };
63 
64  std::optional<Pose> pose = Pose{};
65 
66  struct ForwardArrow
67  {
68  float width = 7.5;
69  float length = 100.0;
71 
72  viz::Arrow draw(const std::string& name, const core::Pose& pose) const;
73  };
74 
75  std::optional<ForwardArrow> forwardArrow = ForwardArrow{};
76 
77 
78  void
79  draw(viz::Layer& layer, core::Graph::ConstVertex vertex, visu::ObjectParserInfo info) const;
80  void draw(viz::Layer& layer, const std::string& name, const core::Pose& pose) const;
81  };
82 
83  struct EdgeVisu
84  {
85  struct Arrow
86  {
87  float width = 5.0;
88  simox::Color color = simox::Color::azure(196);
89 
90  viz::Arrow draw(const std::string& sourceName,
91  const std::string& targetName,
92  const core::Pose& source,
93  const core::Pose& target) const;
94  };
95 
96  std::optional<Arrow> arrow = Arrow{};
97 
98  void
99  draw(viz::Layer& layer, core::Graph::ConstEdge edge, visu::ObjectParserInfo info) const;
100  };
101 
102  struct GraphVisu
103  {
104 
105  std::optional<VertexVisu> vertex = VertexVisu{};
106  std::optional<EdgeVisu> edge = EdgeVisu{};
107 
108  void draw(viz::Layer& layer, const core::Graph& graph, visu::ObjectParserInfo info) const;
109  };
110 
111 } // namespace armarx::navigation::graph
armarx::navigation::graph::EdgeVisu::draw
void draw(viz::Layer &layer, core::Graph::ConstEdge edge, visu::ObjectParserInfo info) const
Definition: Visu.cpp:92
armarx::navigation::graph::visu::ObjectParserInfo::info
const std::vector< ObjectInfo > & info
Definition: Visu.h:50
armarx::navigation::core::Pose
Eigen::Isometry3f Pose
Definition: basic_types.h:31
armarx::navigation::graph::GraphVisu::draw
void draw(viz::Layer &layer, const core::Graph &graph, visu::ObjectParserInfo info) const
Definition: Visu.cpp:111
basic_types.h
armarx::navigation::graph::VertexVisu::ForwardArrow::width
float width
Definition: Visu.h:68
armarx::navigation::graph::VertexVisu::ForwardArrow::color
simox::Color color
Definition: Visu.h:70
boost::target
Vertex target(const detail::edge_base< Directed, Vertex > &e, const PCG &)
Definition: point_cloud_graph.h:668
armarx::navigation::graph
This file is part of ArmarX.
Definition: Visu.h:46
armarx::viz::Arrow
Definition: Elements.h:196
armarx::navigation::graph::VertexVisu::ForwardArrow
Definition: Visu.h:66
armarx::navigation::graph::EdgeVisu::Arrow::draw
viz::Arrow draw(const std::string &sourceName, const std::string &targetName, const core::Pose &source, const core::Pose &target) const
Definition: Visu.cpp:80
armarx::navigation::graph::VertexVisu::ForwardArrow::draw
viz::Arrow draw(const std::string &name, const core::Pose &pose) const
Definition: Visu.cpp:44
armarx::navigation::graph::VertexVisu::pose
std::optional< Pose > pose
Definition: Visu.h:64
armarx::navigation::graph::GraphVisu::vertex
std::optional< VertexVisu > vertex
Definition: Visu.h:105
Color
uint32_t Color
RGBA color.
Definition: color.h:8
armarx::navigation::graph::GraphVisu::edge
std::optional< EdgeVisu > edge
Definition: Visu.h:106
armarx::navigation::graph::VertexVisu::draw
void draw(viz::Layer &layer, core::Graph::ConstVertex vertex, visu::ObjectParserInfo info) const
Definition: Visu.cpp:55
armarx::navigation::graph::GraphVisu
Definition: Visu.h:102
armarx::navigation::core::Graph
Definition: Graph.h:89
armarx::navigation::graph::EdgeVisu::Arrow::width
float width
Definition: Visu.h:87
armarx::viz::Pose
Definition: Elements.h:178
armarx::navigation::graph::EdgeVisu::Arrow::color
simox::Color color
Definition: Visu.h:88
armarx::navigation::graph::EdgeVisu
Definition: Visu.h:83
boost::source
Vertex source(const detail::edge_base< Directed, Vertex > &e, const PCG &)
Definition: point_cloud_graph.h:661
armarx::navigation::graph::VertexVisu::Pose::scale
float scale
Definition: Visu.h:59
armarx::navigation::graph::VertexVisu::Pose::draw
viz::Pose draw(const std::string &name, const core::Pose &pose) const
Definition: Visu.cpp:38
forward_declarations.h
Graph.h
armarx::navigation::graph::visu::ObjectParserInfo::objects
const objpose::ObjectPoseMap & objects
Definition: Visu.h:49
armarx::navigation::graph::EdgeVisu::Arrow
Definition: Visu.h:85
armarx::navigation::graph::VertexVisu::ForwardArrow::length
float length
Definition: Visu.h:69
armarx::navigation::graph::VertexVisu
Definition: Visu.h:54
armarx::navigation::graph::visu::ObjectParserInfo
Definition: Visu.h:47
armarx::viz::Layer
Definition: Layer.h:12
armarx::navigation::graph::EdgeVisu::arrow
std::optional< Arrow > arrow
Definition: Visu.h:96
armarx::viz
This file is part of ArmarX.
Definition: ArVizStorage.cpp:418
armarx::navigation::graph::VertexVisu::forwardArrow
std::optional< ForwardArrow > forwardArrow
Definition: Visu.h:75
armarx::green
QColor green()
Definition: StyleSheets.h:72
armarx::navigation::graph::VertexVisu::Pose
Definition: Visu.h:57
armarx::objpose::ObjectPoseMap
std::map< ObjectID, ObjectPose > ObjectPoseMap
Definition: forward_declarations.h:21