From 872ef12ebd0276b3b54d0d9782444bd8e1733360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Fri, 29 Mar 2013 17:53:40 +0100 Subject: [PATCH] Treat image data as array of unsigned chars. Arithmetic on void* is not defined, this helps a little with various conversions. --- src/Image.cpp | 2 +- src/Image.h | 8 ++++---- src/ImageWrapper.h | 10 +++++----- src/Trade/ImageData.h | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Image.cpp b/src/Image.cpp index 06f8cde86..a1c67a30a 100644 --- a/src/Image.cpp +++ b/src/Image.cpp @@ -31,7 +31,7 @@ template void Image::setData(const typename _format = format; _type = type; _size = size; - _data = reinterpret_cast(data); + _data = reinterpret_cast(data); } template class Image<1>; diff --git a/src/Image.h b/src/Image.h index 37e4d80bd..f0de0ad67 100644 --- a/src/Image.h +++ b/src/Image.h @@ -55,7 +55,7 @@ template class Image: public AbstractImage { * Note that the image data are not copied on construction, but they * are deleted on class destruction. */ - inline explicit Image(const typename DimensionTraits::VectorType& size, Format format, Type type, GLvoid* data): AbstractImage(format, type), _size(size), _data(reinterpret_cast(data)) {} + inline explicit Image(const typename DimensionTraits::VectorType& size, Format format, Type type, GLvoid* data): AbstractImage(format, type), _size(size), _data(reinterpret_cast(data)) {} /** * @brief Constructor @@ -74,8 +74,8 @@ template class Image: public AbstractImage { inline typename DimensionTraits::VectorType size() const { return _size; } /** @brief Pointer to raw data */ - inline void* data() { return _data; } - inline const void* data() const { return _data; } /**< @overload */ + inline unsigned char* data() { return _data; } + inline const unsigned char* data() const { return _data; } /**< @overload */ /** * @brief Set image data @@ -91,7 +91,7 @@ template class Image: public AbstractImage { private: Math::Vector _size; - char* _data; + unsigned char* _data; }; #ifndef DOXYGEN_GENERATING_OUTPUT diff --git a/src/ImageWrapper.h b/src/ImageWrapper.h index 3a20cfc6c..e9e0b7f1d 100644 --- a/src/ImageWrapper.h +++ b/src/ImageWrapper.h @@ -62,7 +62,7 @@ template class ImageWrapper: public AbstractImage { * Note that the image data are not copied on construction, but they * are deleted on class destruction. */ - inline explicit ImageWrapper(const typename DimensionTraits::VectorType& size, Format format, Type type, GLvoid* data): AbstractImage(format, type), _size(size), _data(reinterpret_cast(data)) {} + inline explicit ImageWrapper(const typename DimensionTraits::VectorType& size, Format format, Type type, GLvoid* data): AbstractImage(format, type), _size(size), _data(reinterpret_cast(data)) {} /** * @brief Constructor @@ -79,8 +79,8 @@ template class ImageWrapper: public AbstractImage { inline typename DimensionTraits::VectorType size() const { return _size; } /** @brief Pointer to raw data */ - inline void* data() { return _data; } - inline const void* data() const { return _data; } /**< @overload */ + inline unsigned char* data() { return _data; } + inline const unsigned char* data() const { return _data; } /**< @overload */ /** * @brief Set image data @@ -91,12 +91,12 @@ template class ImageWrapper: public AbstractImage { * destruction. */ inline void setData(GLvoid* data) { - _data = reinterpret_cast(data); + _data = reinterpret_cast(data); } private: Math::Vector _size; - char* _data; + unsigned char* _data; }; /** @brief One-dimensional image wrapper */ diff --git a/src/Trade/ImageData.h b/src/Trade/ImageData.h index 8fd76c525..dbc6a548b 100644 --- a/src/Trade/ImageData.h +++ b/src/Trade/ImageData.h @@ -55,7 +55,7 @@ template class ImageData: public AbstractImage { * Note that the image data are not copied on construction, but they * are deleted on class destruction. */ - inline explicit ImageData(const typename DimensionTraits::VectorType& size, Format format, Type type, GLvoid* data): AbstractImage(format, type), _size(size), _data(reinterpret_cast(data)) {} + inline explicit ImageData(const typename DimensionTraits::VectorType& size, Format format, Type type, GLvoid* data): AbstractImage(format, type), _size(size), _data(reinterpret_cast(data)) {} /** @brief Destructor */ inline ~ImageData() { delete[] _data; } @@ -64,12 +64,12 @@ template class ImageData: public AbstractImage { inline typename DimensionTraits::VectorType size() const { return _size; } /** @brief Pointer to raw data */ - inline void* data() { return _data; } - inline const void* data() const { return _data; } /**< @overload */ + inline unsigned char* data() { return _data; } + inline const unsigned char* data() const { return _data; } /**< @overload */ private: Math::Vector _size; - char* _data; + unsigned char* _data; }; /** @brief One-dimensional image */