From cc10db500e59b6f65521612f753146bacf6d6a90 Mon Sep 17 00:00:00 2001 From: Sergey Alexandrov Date: Mon, 12 Jan 2015 00:12:28 +0100 Subject: [PATCH] Copy RGB channels separately instead of using memcpy --- .../visualization/impl/point_cloud_color_handlers.hpp | 5 ++++- visualization/src/point_cloud_handlers.cpp | 11 +++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/visualization/include/pcl/visualization/impl/point_cloud_color_handlers.hpp b/visualization/include/pcl/visualization/impl/point_cloud_color_handlers.hpp index ab30aa7b343..306f83ecabe 100644 --- a/visualization/include/pcl/visualization/impl/point_cloud_color_handlers.hpp +++ b/visualization/include/pcl/visualization/impl/point_cloud_color_handlers.hpp @@ -539,7 +539,10 @@ pcl::visualization::PointCloudColorHandlerLabelField::getColor (vtkSmart { if (pcl::isFinite (cloud_->points[cp])) { - memcpy (&colors[j], &colormap[cloud_->points[cp].label].rgba, 3); + const pcl::RGB& color = colormap[cloud_->points[cp].label]; + colors[j ] = color.r; + colors[j + 1] = color.g; + colors[j + 2] = color.b; j += 3; } } diff --git a/visualization/src/point_cloud_handlers.cpp b/visualization/src/point_cloud_handlers.cpp index da66169f195..02b3ab7a2a0 100644 --- a/visualization/src/point_cloud_handlers.cpp +++ b/visualization/src/point_cloud_handlers.cpp @@ -654,7 +654,10 @@ pcl::visualization::PointCloudColorHandlerLabelField::getCo if (!pcl_isfinite (x_data) || !pcl_isfinite (y_data) || !pcl_isfinite (z_data)) continue; - memcpy (&colors[j], &colormap[label].rgba, 3); + const pcl::RGB& color = colormap[label]; + colors[j ] = color.r; + colors[j + 1] = color.g; + colors[j + 2] = color.b; j += 3; } } @@ -666,7 +669,11 @@ pcl::visualization::PointCloudColorHandlerLabelField::getCo { uint32_t label; memcpy (&label, &cloud_->data[point_offset], field_size); - memcpy (&colors[j], &colormap[label].rgba, 3); + + const pcl::RGB& color = colormap[label]; + colors[j ] = color.r; + colors[j + 1] = color.g; + colors[j + 2] = color.b; j += 3; } }