| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- #include "ExtendedImage.h"
- #if !defined( WIN32 ) || defined( IMT_DLL )
- #include <cstring>
- #endif
- ExtendedImage::ExtendedImage()
- #if defined( WIN32 ) && !defined( IMT_DLL )
- : CImage(),
- m_resX( 1.0 ),
- m_resY( 1.0 )
- #else
- : m_resX( 1.0 ),
- m_resY( 1.0 ),
- m_width( 0 ),
- m_height( 0 ),
- m_bpp( 0 ),
- m_buffer( NULL )
- #endif
- {
- }
- #if !defined( WIN32 ) || defined( IMT_DLL )
- 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::GetBits()
- {
- return m_buffer;
- }
- char* ExtendedImage::GetPixel( int x, int y )
- {
- int n = m_bpp / 8;
-
- return m_buffer + n * ( m_width * y + x );
- }
- void ExtendedImage::SetPixel( int x, int y, char value )
- {
- char *dadd;
- int n = m_bpp / 8;
-
- dadd = m_buffer + n * ( m_width * y + x );
-
- *dadd = value;
- }
- #endif
- 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;
- }
- void ExtendedImage::Copy(int dimh, int dimv, ExtendedImage *vSource)
- {
- int x, y;
- unsigned long pixel;
- for (x = 0; x < dimh; x++)
- {
- for (y = 0; y < dimv; y++)
- {
- pixel = (unsigned long) *vSource->GetPixel(x,y);
- // SetPixel(x, y, pixel);
- }
- }
- }
- void ExtendedImage::Copy2(int dimh, int dimv, ExtendedImage *vSource)
- {
- char* imgPtr = (char*) GetBits();
- char* imgPtrSrc = (char*) vSource->GetBits();
- memcpy(imgPtr, imgPtrSrc, (size_t) (dimh * dimv * 3 * sizeof(unsigned char)));
- }
-
|