54 lines
1.2 KiB
C++
54 lines
1.2 KiB
C++
|
/// \file image.cpp
|
||
|
/// \copyright 2022 Sascha Nitsch
|
||
|
/// Licenced under MIT
|
||
|
/// \brief definition of the main class of the application
|
||
|
|
||
|
// system includes
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
// own includes
|
||
|
#include "image.h"
|
||
|
|
||
|
Image::Image(uint16_t width, uint16_t height, uint8_t channels, uint8_t bits, void* pixels) {
|
||
|
m_width = width;
|
||
|
m_height = height;
|
||
|
m_channels = channels;
|
||
|
m_pixels = pixels;
|
||
|
m_ownPixel = false;
|
||
|
m_bitsPerChannel = bits;
|
||
|
}
|
||
|
|
||
|
Image::~Image() {
|
||
|
if (m_ownPixel && m_pixels) {
|
||
|
free(m_pixels);
|
||
|
}
|
||
|
}
|
||
|
bool Image::allocateMemory() {
|
||
|
if (m_ownPixel && m_pixels) {
|
||
|
free(m_pixels);
|
||
|
}
|
||
|
m_pixels = reinterpret_cast<uint8_t*>(malloc(m_width * m_height * m_channels * m_bitsPerChannel / 8));
|
||
|
bzero(m_pixels, m_width * m_height * m_channels * m_bitsPerChannel / 8);
|
||
|
if (m_pixels) {
|
||
|
m_ownPixel = true;
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
uint8_t* Image::getPixels8() const {
|
||
|
return reinterpret_cast<uint8_t*>(m_pixels);
|
||
|
}
|
||
|
|
||
|
uint16_t* Image::getPixels16() const {
|
||
|
return reinterpret_cast<uint16_t*>(m_pixels);
|
||
|
}
|
||
|
|
||
|
uint16_t Image::getHeight() const {
|
||
|
return m_height;
|
||
|
}
|
||
|
|
||
|
uint16_t Image::getWidth() const {
|
||
|
return m_width;
|
||
|
}
|