From 607a01fbd5d3c88807f2439569dad6088ad5769a Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Thu, 24 Mar 2022 09:51:24 +0100
Subject: [PATCH] Add ARON DTO for simox::Color

---
 .../libraries/aron/common/CMakeLists.txt      |  2 ++
 .../libraries/aron/common/aron/Color.xml      | 26 +++++++++++++++++++
 .../aron/common/aron_conversions/simox.cpp    | 20 +++++++++++++-
 .../aron/common/aron_conversions/simox.h      |  9 ++++---
 .../aron/common/forward_declarations.h        |  9 +++++++
 5 files changed, 62 insertions(+), 4 deletions(-)
 create mode 100644 source/RobotAPI/libraries/aron/common/aron/Color.xml
 create mode 100644 source/RobotAPI/libraries/aron/common/forward_declarations.h

diff --git a/source/RobotAPI/libraries/aron/common/CMakeLists.txt b/source/RobotAPI/libraries/aron/common/CMakeLists.txt
index 98cfb29ec..498c79c47 100644
--- a/source/RobotAPI/libraries/aron/common/CMakeLists.txt
+++ b/source/RobotAPI/libraries/aron/common/CMakeLists.txt
@@ -13,6 +13,7 @@ armarx_add_library(
 
     HEADERS
         aron_conversions.h
+        forward_declarations.h
         aron_conversions/core.h
         aron_conversions/armarx.h
         aron_conversions/simox.h
@@ -36,6 +37,7 @@ armarx_enable_aron_file_generation_for_target(
     ARON_FILES
         aron/trajectory.xml
         aron/color.xml
+        aron/Color.xml
         aron/PackagePath.xml
         aron/AxisAlignedBoundingBox.xml
         aron/OrientedBox.xml
diff --git a/source/RobotAPI/libraries/aron/common/aron/Color.xml b/source/RobotAPI/libraries/aron/common/aron/Color.xml
new file mode 100644
index 000000000..180a9b372
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/common/aron/Color.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+
+  <GenerateTypes>
+
+    <Object name='simox::arondto::Color'>
+        <ObjectChild key='r'>
+          <int />
+        </ObjectChild>
+
+        <ObjectChild key='g'>
+          <int />
+        </ObjectChild>
+
+        <ObjectChild key='b'>
+          <int />
+        </ObjectChild>
+
+        <ObjectChild key='a'>
+          <int />
+        </ObjectChild>
+    </Object>
+
+  </GenerateTypes>
+
+</AronTypeDefinition>
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/simox.cpp b/source/RobotAPI/libraries/aron/common/aron_conversions/simox.cpp
index c87d13cdb..f8629190d 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/simox.cpp
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/simox.cpp
@@ -1,5 +1,8 @@
 #include "simox.h"
 
+#include <RobotAPI/libraries/aron/common/aron/AxisAlignedBoundingBox.aron.generated.h>
+#include <RobotAPI/libraries/aron/common/aron/Color.aron.generated.h>
+#include <RobotAPI/libraries/aron/common/aron/OrientedBox.aron.generated.h>
 
 
 void simox::fromAron(const arondto::AxisAlignedBoundingBox& dto, AxisAlignedBoundingBox& bo)
@@ -15,7 +18,6 @@ void simox::toAron(arondto::AxisAlignedBoundingBox& dto, const AxisAlignedBoundi
 }
 
 
-
 void simox::fromAron(const arondto::OrientedBox& dto, OrientedBoxf& bo)
 {
     bo = OrientedBoxf(dto.center, dto.orientation, dto.extents);
@@ -28,3 +30,19 @@ void simox::toAron(arondto::OrientedBox& dto, const OrientedBoxf& bo)
     dto.extents = bo.dimensions();
 }
 
+
+void simox::fromAron(const arondto::Color& dto, Color& bo)
+{
+    bo.r = dto.r;
+    bo.g = dto.g;
+    bo.b = dto.b;
+    bo.a = dto.a;
+}
+
+void simox::toAron(arondto::Color& dto, const Color& bo)
+{
+    dto.r = bo.r;
+    dto.g = bo.g;
+    dto.b = bo.b;
+    dto.a = bo.a;
+}
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/simox.h b/source/RobotAPI/libraries/aron/common/aron_conversions/simox.h
index 64e847afb..5440ac1c6 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/simox.h
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/simox.h
@@ -1,10 +1,10 @@
 #pragma once
 
+#include <SimoxUtility/color/Color.h>
 #include <SimoxUtility/shapes/AxisAlignedBoundingBox.h>
-#include <RobotAPI/libraries/aron/common/aron/AxisAlignedBoundingBox.aron.generated.h>
-
 #include <SimoxUtility/shapes/OrientedBox.h>
-#include <RobotAPI/libraries/aron/common/aron/OrientedBox.aron.generated.h>
+
+#include <RobotAPI/libraries/aron/common/forward_declarations.h>
 
 
 namespace simox
@@ -14,5 +14,8 @@ namespace simox
 
     void fromAron(const arondto::OrientedBox& dto, OrientedBoxf& bo);
     void toAron(arondto::OrientedBox& dto, const OrientedBoxf& bo);
+
+    void fromAron(const arondto::Color& dto, Color& bo);
+    void toAron(arondto::Color& dto, const Color& bo);
 }
 
diff --git a/source/RobotAPI/libraries/aron/common/forward_declarations.h b/source/RobotAPI/libraries/aron/common/forward_declarations.h
new file mode 100644
index 000000000..ba4679a85
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/common/forward_declarations.h
@@ -0,0 +1,9 @@
+#pragma once
+
+
+namespace simox::arondto
+{
+    class AxisAlignedBoundingBox;
+    class Color;
+    class OrientedBox;
+}
-- 
GitLab