#include "ExtendedImage.h" #include ExtendedImage::ExtendedImage() : m_resX( 1.0 ), m_resY( 1.0 ), m_width( 0 ), m_height( 0 ), m_bpp( 0 ), m_buffer( NULL ) { } ExtendedImage::~ExtendedImage() { Destroy(); } bool ExtendedImage::Create( int width, int height, int bpp ) { unsigned long n = width * height * bpp / 8; m_width = width; m_height = height; m_bpp = bpp; m_buffer = new char[ n ]; if ( !m_buffer ) { return false; } return true; } void ExtendedImage::Destroy() { delete[] m_buffer; m_buffer = NULL; m_width = 0; m_height = 0; m_bpp = 0; m_resX = 1.0; m_resY = 1.0; } bool ExtendedImage::IsNull() { return m_buffer ? false : true; } bool ExtendedImage::SetRaw( char* buffer, unsigned long n ) { if ( buffer ) { int bpp = m_bpp / 8; unsigned long deltaH = ( n / bpp ) % m_height; unsigned long scanline = m_width * bpp; int i = m_height; char* bptr = m_buffer; char* iptr = buffer; while ( i-- ) { std::memcpy( bptr, iptr, scanline ); bptr += scanline; iptr += scanline + deltaH; } return true; } return false; } char* ExtendedImage::GetBuffer() { return m_buffer; } char* ExtendedImage::GetPixel( int x, int y ) { int n = m_bpp / 8; return m_buffer + n * ( m_width * y + x ); } bool ExtendedImage::HasCalibration() { return ( ( m_resX > 0.0 ) && ( m_resY > 0.0 ) ); } void ExtendedImage::SetResolution( double resX, double resY ) { m_resX = resX; m_resY = resY; }