Gazebo Sim
API Reference
9.0.0
insert_drive_file
Tutorials
library_books
Classes
toc
Namespaces
insert_drive_file
Files
launch
Gazebo Website
Index
List
Hierarchy
Members: All
Members: Functions
Members: Variables
Members: Typedefs
Members: Enumerations
Members: Enumerator
List
Members
Functions
Typedefs
Variables
Enumerations
Enumerator
src
gz-sim
include
gz
sim
components
Visual.hh
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2018 Open Source Robotics Foundation
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*
16
*/
17
#ifndef GZ_SIM_COMPONENTS_VISUAL_HH_
18
#define GZ_SIM_COMPONENTS_VISUAL_HH_
19
20
#include <string>
21
22
#include <sdf/parser.hh>
23
#include <sdf/Element.hh>
24
25
#include <
gz/sim/components/Factory.hh
>
26
#include <
gz/sim/components/Component.hh
>
27
#include <gz/sim/config.hh>
28
29
namespace
gz
30
{
31
namespace
sim
32
{
33
// Inline bracket to help doxygen filtering.
34
inline
namespace
GZ_SIM_VERSION_NAMESPACE {
35
namespace
serializers
36
{
37
class
SdfElementSerializer
38
{
43
public
:
static
std::ostream
&
Serialize
(
std::ostream
&_out,
44
const
sdf::ElementPtr &_elem)
45
{
46
_out <<
"<?xml version=\"1.0\" ?>"
47
<<
"<sdf version='"
<< SDF_PROTOCOL_VERSION <<
"'>"
48
<< _elem->ToString(
""
)
49
<<
"</sdf>"
;
50
return
_out;
51
}
52
57
public
:
static
std::istream
&
Deserialize
(
std::istream
&_in,
58
sdf::ElementPtr &_elem)
59
{
60
std::string
sdfStr(
std::istreambuf_iterator<char>
(_in), {});
61
62
sdf::SDFPtr sdfParsed(
new
sdf::SDF());
63
sdf::init(sdfParsed);
64
bool
result = sdf::readString(sdfStr, sdfParsed);
65
if
(!result)
66
{
67
gzerr
<<
"Unable to deserialize sdf::ElementPtr"
<<
std::endl
;
68
return
_in;
69
}
70
71
_elem = sdfParsed->Root()->GetFirstElement();
72
return
_in;
73
}
74
};
75
}
76
77
namespace
components
78
{
80
using
Visual
=
Component<NoData, class VisualTag>
;
81
GZ_SIM_REGISTER_COMPONENT
(
"gz_sim_components.Visual"
,
Visual
)
82
83
84
using
VisualPlugin =
Component
<sdf::ElementPtr,
85
class
VisualPluginTag,
86
serializers::SdfElementSerializer>;
87
GZ_SIM_REGISTER_COMPONENT
("gz_sim_components.VisualPlugin",
88
VisualPlugin)
89
}
90
}
91
}
92
}
93
94
#endif