diff options
Diffstat (limited to 'arm_compute/core/PixelValue.h')
-rw-r--r-- | arm_compute/core/PixelValue.h | 50 |
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. |