aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/core/PixelValue.h
diff options
context:
space:
mode:
Diffstat (limited to 'arm_compute/core/PixelValue.h')
-rw-r--r--arm_compute/core/PixelValue.h50
1 files changed, 49 insertions, 1 deletions
diff --git a/arm_compute/core/PixelValue.h b/arm_compute/core/PixelValue.h
index 530cc166a2..e86eeba121 100644
--- a/arm_compute/core/PixelValue.h
+++ b/arm_compute/core/PixelValue.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016-2018 ARM Limited.
+ * Copyright (c) 2016-2019 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -39,6 +39,54 @@ public:
: value{ uint64_t(0) }
{
}
+ /** Initialize the union with a pixel value of chosen datatype
+ *
+ * @param[in] v int value.
+ * @param[in] datatype DataType that @p v have to be stored
+ */
+ PixelValue(uint64_t v, DataType datatype)
+ : PixelValue()
+ {
+ switch(datatype)
+ {
+ case DataType::U8:
+ value.u8 = static_cast<uint8_t>(v);
+ break;
+ case DataType::S8:
+ value.s8 = static_cast<int8_t>(v);
+ break;
+ case DataType::U16:
+ value.u16 = static_cast<uint16_t>(v);
+ break;
+ case DataType::S16:
+ value.s16 = static_cast<int16_t>(v);
+ break;
+ case DataType::U32:
+ value.u32 = static_cast<uint32_t>(v);
+ break;
+ case DataType::S32:
+ value.s32 = static_cast<int32_t>(v);
+ break;
+ case DataType::U64:
+ value.u64 = static_cast<uint64_t>(v);
+ break;
+ case DataType::S64:
+ value.s16 = static_cast<int64_t>(v);
+ break;
+ case DataType::F16:
+ value.f16 = static_cast<half>(v);
+ break;
+ case DataType::F32:
+ value.f32 = static_cast<float>(v);
+ break;
+ case DataType::F64:
+ value.f64 = static_cast<double>(v);
+ break;
+ default:
+ value.u64 = v;
+ break;
+ }
+ }
/** Initialize the union with a U8 pixel value
*
* @param[in] v U8 value.