diff --git a/resource_retriever_msgs/CMakeLists.txt b/resource_retriever_msgs/CMakeLists.txt
new file mode 100644
index 000000000..80fad1ad1
--- /dev/null
+++ b/resource_retriever_msgs/CMakeLists.txt
@@ -0,0 +1,17 @@
+cmake_minimum_required(VERSION 3.8)
+project(resource_retriever_msgs)
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+# find dependencies
+find_package(ament_cmake REQUIRED)
+find_package(rosidl_default_generators REQUIRED)
+
+rosidl_generate_interfaces(${PROJECT_NAME}
+ "srv/GetResource.srv"
+)
+
+ament_export_dependencies(rosidl_default_runtime)
+ament_package()
diff --git a/resource_retriever_msgs/package.xml b/resource_retriever_msgs/package.xml
new file mode 100644
index 000000000..e3bc78e79
--- /dev/null
+++ b/resource_retriever_msgs/package.xml
@@ -0,0 +1,21 @@
+
+
+
+ resource_retriever_msgs
+ 0.0.0
+ TODO: Package description
+ eloy
+ Apache-2.0
+
+ ament_cmake
+
+ rosidl_default_generators
+
+ rosidl_default_runtime
+
+ rosidl_interface_packages
+
+
+ ament_cmake
+
+
diff --git a/resource_retriever_msgs/srv/GetResource.srv b/resource_retriever_msgs/srv/GetResource.srv
new file mode 100644
index 000000000..a9fdb9dcf
--- /dev/null
+++ b/resource_retriever_msgs/srv/GetResource.srv
@@ -0,0 +1,5 @@
+string path
+---
+string path
+int32 status_code
+uint8[] body
diff --git a/rviz_common/src/rviz_common/load_resource.cpp b/rviz_common/src/rviz_common/load_resource.cpp
index b2b22da74..ed19c95c8 100644
--- a/rviz_common/src/rviz_common/load_resource.cpp
+++ b/rviz_common/src/rviz_common/load_resource.cpp
@@ -46,18 +46,11 @@
namespace rviz_common
{
-resource_retriever::MemoryResource getResource(const std::string & resource_path)
+resource_retriever::MemoryResourcePtr getResource(const std::string & resource_path)
{
+ printf("rviz_common::getResource: %s\n", resource_path.c_str());
resource_retriever::Retriever retriever;
- resource_retriever::MemoryResource res;
- try {
- res = retriever.get(resource_path);
- } catch (resource_retriever::Exception & e) {
- RVIZ_COMMON_LOG_DEBUG(e.what());
- return resource_retriever::MemoryResource();
- }
-
- return res;
+ return retriever.get(resource_path);
}
QPixmap loadPixmap(QString url, bool fill_cache)
@@ -72,8 +65,8 @@ QPixmap loadPixmap(QString url, bool fill_cache)
RVIZ_COMMON_LOG_DEBUG("Load pixmap at " + url.toStdString());
auto image = getResource(url.toStdString());
- if (image.size != 0) {
- if (!pixmap.loadFromData(image.data.get(), static_cast(image.size))) {
+ if (image!= nullptr && !image->data.empty()) {
+ if (!pixmap.loadFromData(image->data.data(), static_cast(image->data.size()))) {
RVIZ_COMMON_LOG_ERROR("Could not load pixmap " + url.toStdString());
}
}
diff --git a/rviz_default_plugins/CMakeLists.txt b/rviz_default_plugins/CMakeLists.txt
index 1bdc96b17..27ec5181c 100644
--- a/rviz_default_plugins/CMakeLists.txt
+++ b/rviz_default_plugins/CMakeLists.txt
@@ -73,6 +73,7 @@ find_package(pluginlib REQUIRED)
find_package(point_cloud_transport REQUIRED)
find_package(rclcpp REQUIRED)
find_package(resource_retriever REQUIRED)
+find_package(resource_retriever_msgs REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(tf2 REQUIRED)
find_package(tf2_geometry_msgs REQUIRED)
@@ -262,11 +263,12 @@ target_link_libraries(rviz_default_plugins PUBLIC
tf2_ros::tf2_ros
urdf::urdf
${visualization_msgs_TARGETS}
+ resource_retriever::resource_retriever
+ ${resource_retriever_msgs_TARGETS}
)
target_link_libraries(rviz_default_plugins PRIVATE
gz-math::core
- resource_retriever::resource_retriever
)
# Causes the visibility macros to use dllexport rather than dllimport,
diff --git a/rviz_default_plugins/include/rviz_default_plugins/displays/marker/marker_common.hpp b/rviz_default_plugins/include/rviz_default_plugins/displays/marker/marker_common.hpp
index 42acdcef2..569b128db 100644
--- a/rviz_default_plugins/include/rviz_default_plugins/displays/marker/marker_common.hpp
+++ b/rviz_default_plugins/include/rviz_default_plugins/displays/marker/marker_common.hpp
@@ -35,6 +35,7 @@
#include