/// \file image.h /// \copyright 2022 Sascha Nitsch /// Licence under MIT license /// \brief declaration of the Image class #ifndef IMAGE_H_ #define IMAGE_H_ // system includes #include /// wrapper for pixel data of an image class Image { public: /// constructor /// \param width width in pixel /// \param height height in pixel /// \param channels number of channels /// \param bits number of bits per channel /// \param pixels optional memory for the image Image(uint16_t width, uint16_t height, uint8_t channels, uint8_t bits, void* pixels = nullptr); /// destructor ~Image(); /// \brief allocate memory for image data bool allocateMemory(); /// \brief get pointer to pixel data /// \return pointer to pixel data uint8_t* getPixels8() const; /// \brief get pointer to pixel data /// \return pointer to pixel data uint16_t* getPixels16() const; /// \brief get width of image /// \return width of image uint16_t getWidth() const; /// \brief get height of image /// \return height of image uint16_t getHeight() const; private: /// image width uint16_t m_width; /// image height uint16_t m_height; /// number of channels uint8_t m_channels; /// image data as RGB 8 or 16 bit per channel void* m_pixels; /// do we own the pixel memory? bool m_ownPixel; /// number of bits per channel uint8_t m_bitsPerChannel; }; #endif // IMAGE_H_