Gazebo Sim

API Reference

7.7.0
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 
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 {
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  {
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 {
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