Browse Source

Default template parameter for Buffer::data(), templated Image::data().

To have BufferImage::buffer().data() consistent with Image::data()
(default is unsigned char data type, but it is possible to reinterpret
the data). Saves some ugly code:

    Image2D image(ColorFormat::RGB, ColorType::UnsignedByte, ...);
    Color3ub a = reinterpret_cast<Color3ub*>(image.data())[0]; // before
    Color3ub b = image.data<Color3ub>()[0];                    // after
pull/51/head
Vladimír Vondruš 13 years ago
parent
commit
f31cbccbcc
  1. 4
      src/Buffer.h
  2. 10
      src/Image.h
  3. 5
      src/ImageReference.h
  4. 10
      src/Trade/ImageData.h

4
src/Buffer.h

@ -636,7 +636,7 @@ class MAGNUM_EXPORT Buffer: public AbstractObject {
* @requires_gl %Buffer data queries are not available in OpenGL ES.
* Use @ref Magnum::Buffer::map() "map()" instead.
*/
template<class T> Containers::Array<T> data();
template<class T = unsigned char> Containers::Array<T> data();
/**
* @brief %Buffer subdata
@ -652,7 +652,7 @@ class MAGNUM_EXPORT Buffer: public AbstractObject {
* @requires_gl %Buffer data queries are not available in OpenGL ES.
* Use @ref Magnum::Buffer::map() "map()" instead.
*/
template<class T> Containers::Array<T> subData(GLintptr offset, GLsizeiptr size);
template<class T = unsigned char> Containers::Array<T> subData(GLintptr offset, GLsizeiptr size);
#endif
/**

10
src/Image.h

@ -101,8 +101,14 @@ template<UnsignedInt dimensions> class Image: public AbstractImage {
*
* @see @ref release()
*/
unsigned char* data() { return _data; }
const unsigned char* data() const { return _data; } /**< @overload */
template<class T = unsigned char> T* data() {
return reinterpret_cast<T*>(_data);
}
/** @overload */
template<class T = unsigned char> const T* data() const {
return reinterpret_cast<const T*>(_data);
}
/**
* @brief Set image data

5
src/ImageReference.h

@ -79,6 +79,11 @@ template<UnsignedInt dimensions> class ImageReference: public AbstractImage {
/** @brief Pointer to raw data */
constexpr const unsigned char* data() const { return _data; }
/** @overload */
template<class T = unsigned char> const T* data() const {
return reinterpret_cast<const T*>(_data);
}
/**
* @brief Set image data
* @param data %Image data

10
src/Trade/ImageData.h

@ -91,8 +91,14 @@ template<UnsignedInt dimensions> class ImageData: public AbstractImage {
*
* @see @ref release()
*/
unsigned char* data() { return _data; }
const unsigned char* data() const { return _data; } /**< @overload */
template<class T = unsigned char> T* data() {
return reinterpret_cast<T*>(_data);
}
/** @overload */
template<class T = unsigned char> const T* data() const {
return reinterpret_cast<const T*>(_data);
}
/**
* @brief Release data storage

Loading…
Cancel
Save