pictogram_array_display.cpp
Go to the documentation of this file.
1 // -*- mode: c++ -*-
2 /*********************************************************************
3  * Software License Agreement (BSD License)
4  *
5  * Copyright (c) 2014, JSK Lab
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above
15  * copyright notice, this list of conditions and the following
16  * disclaimer in the documentation and/or other materials provided
17  * with the distribution.
18  * * Neither the name of the JSK Lab nor the names of its
19  * contributors may be used to endorse or promote products derived
20  * from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGE.
34  *********************************************************************/
35 
37 
38 namespace jsk_rviz_plugins
39 {
41  {
42  setupFont();
43  }
44 
46  {
47  }
48 
50  {
52  scene_node_ = scene_manager_->getRootSceneNode()->createChildSceneNode();
53  }
54 
56  {
58  for (size_t i = 0; i < pictograms_.size(); i++) {
59  pictograms_[i]->setEnable(false);
60  }
61  }
62 
64  {
65  subscribe();
66  for (size_t i = 0; i < pictograms_.size(); i++) {
67  pictograms_[i]->setEnable(false);
68  }
69  }
70 
72  {
73  if (pictograms_.size() > num) {
74  for (size_t i = num; i < pictograms_.size(); i++) {
75  pictograms_[i]->setEnable(false);
76  }
77  pictograms_.resize(num);
78  }
79  else if (pictograms_.size() < num) {
80  for (size_t i = pictograms_.size(); i < num; i++) {
81  //pictograms_[i]->setEnable(false);
84  1.0));
85  pictogram->setContext(context_);
86  pictogram->setEnable(false);
87  pictogram->start();
88  pictogram->setColor(QColor(25, 255, 240));
89  pictogram->setAlpha(1.0);
90  pictograms_.push_back(pictogram);
91  }
92  }
93  }
94 
96  const jsk_rviz_plugins::PictogramArray::ConstPtr& msg)
97  {
98  boost::mutex::scoped_lock lock(mutex_);
99  allocatePictograms(msg->pictograms.size());
100  for (size_t i = 0; i < pictograms_.size(); i++) {
101  pictograms_[i]->setEnable(isEnabled());
102  }
103  if (!isEnabled()) {
104  return;
105  }
106  for (size_t i = 0; i < msg->pictograms.size(); i++) {
108  pictogram->setAction(msg->pictograms[i].action);
109  if (msg->pictograms[i].action == jsk_rviz_plugins::Pictogram::DELETE) {
110  continue;
111  }
112 
113  if (msg->pictograms[i].size <= 0.0) {
114  pictogram->setSize(0.5);
115  }
116  else {
117  pictogram->setSize(msg->pictograms[i].size / 2.0);
118  }
119  pictogram->setColor(QColor(msg->pictograms[i].color.r * 255,
120  msg->pictograms[i].color.g * 255,
121  msg->pictograms[i].color.b * 255));
122  pictogram->setAlpha(msg->pictograms[i].color.a);
123  pictogram->setPose(msg->pictograms[i].pose,
124  msg->pictograms[i].header.frame_id);
125  pictogram->setText(msg->pictograms[i].character);
126  pictogram->setMode(msg->pictograms[i].mode);
127  pictogram->setTTL(msg->pictograms[i].ttl);
128  pictogram->setSpeed(msg->pictograms[i].speed);
129  }
130  }
131 
132  void PictogramArrayDisplay::update(float wall_dt, float ros_dt)
133  {
134  boost::mutex::scoped_lock lock(mutex_);
135  for (size_t i = 0; i < pictograms_.size(); i++) {
136  pictograms_[i]->update(wall_dt, ros_dt);
137  }
138  }
139 }
140 
std::vector< PictogramObject::Ptr > pictograms_
PLUGINLIB_EXPORT_CLASS(jsk_rviz_plugins::PictogramArrayDisplay, rviz::Display)
DisplayContext * context_
void update(float wall_dt, float ros_dt)
Ogre::SceneNode * scene_node_
void processMessage(const jsk_rviz_plugins::PictogramArray::ConstPtr &msg)
Ogre::SceneManager * scene_manager_
bool isEnabled() const


jsk_rviz_plugins
Author(s): Kei Okada , Yohei Kakiuchi , Shohei Fujii , Ryohei Ueda
autogenerated on Thu Jun 1 2023 02:45:58