unsigned char* GetBuffer();
/**
+ * @brief Gets the pixel buffer. This is a pointer to the internal
+ * pixel buffer.
+ *
+ * @warning If there is no pixel buffer (e.g. this object has been
+ * converted to a PixelData), this method will return NULL.
+ *
+ * @return The pixel buffer, or NULL.
+ */
+ const unsigned char* const GetBuffer() const;
+
+ /**
* @brief Gets the width of the buffer in pixels.
*
* @SINCE_1_2.46
/**
* @brief Rotates the pixel buffer by the given angle.
*
- * @note Operation valid for pixel formats: A8, L8, LA88, RGB888, RGB8888, BGR8888, RGBA8888 and BGRA8888. Does nothing otherwise.
+ * @note Operation valid for pixel formats: A8, L8, LA88, RGB888, RGB8888, BGR8888, RGBA8888 and BGRA8888. Fails otherwise.
* @note The operation does nothing for angles equivalent to 0 degrees: -360, 360, 720, etc.
* @note If the pixel buffer does rotate, all the pointers to the internal pixel buffer retrieved by the method GetPixelBuffer() become invalid.
*
* @param[in] angle The angle in degrees.
+ *
+ * @return @e false if the rotation fails (invalid pixel format or memory issues).
+ */
+ bool Rotate( Degree angle );
+
+ /**
+ * @brief Returns pixel-buffer is premultiplied or not.
+ * @return true if alpha is pre-multiplied.
*/
- void Rotate( Degree angle );
+ bool IsAlphaPreMultiplied() const;
public: