///////////////////////////////////////////////////////////////////////////// // PixelPointer.cpp #include "stdafx.h" #include "ImagePixel.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////// // CColorPixel CColorPixel::CColorPixel() { } CColorPixel::~CColorPixel() { } ///////////////////////////////////////////////////////////////// // CColorPixelPtr CColorPixelPtr::CColorPixelPtr(HDIB hHandle) { // ¸Þ¸ð¸® ºí·ÏÀ» °íÁ¤ LPSTR lpDIBHdr = (LPSTR) ::GlobalLock((HGLOBAL) hHandle); m_hHandle = hHandle; m_nHeight = ::DibHeight(lpDIBHdr); // À̹ÌÁöÀÇ ¼¼·Î ±æÀÌ int nWidth = WIDTHBYTES(::DibWidth(lpDIBHdr)*24); // À̹ÌÁöÀÇ °¡·Î ±æÀÌ // À̹ÌÁöÀÇ ¼¼·Î ±æÀÌ ¸¸Å­ Æ÷ÀÎÅÍ ¹è¿­ ÇÒ´ç m_pPtr = new LPCOLOR [m_nHeight]; // Çì´õ ´ÙÀ½¿¡ ³ª¿À´Â ù¹ø° Çȼ¿ÀÇ Æ÷ÀÎÅ͸¦ ¾òÀ½ LPSTR lpDIBBits = ::DibImage(lpDIBHdr); // °¡·Î ±æÀÌ ¸¸Å­¾¿ ÁøÇàÇϸç m_pPtr¿¡ À̹ÌÁöÀÇ // °¢ ÁÙÀÇ Ã¹¹ø° Çȼ¿ÀÇ ÁÖ¼Ò¸¦ µÚÁý¾î¼­ ÀúÀå for(int i=m_nHeight-1 ; i>=0 ; i--) { m_pPtr[i] = (LPCOLOR)lpDIBBits; lpDIBBits += nWidth; } } CColorPixelPtr::~CColorPixelPtr() { // ¸Þ¸ð¸® ºí·ÏÀ» Ç®¾îÁÜ GlobalUnlock((HGLOBAL) m_hHandle); TRY { // ÇÒ´ç ¹Þ¾Ò´ø Æ÷ÀÎÅÍ ¹è¿­À» ÇØÁ¦ delete [] m_pPtr; } CATCH (CMemoryException, e) { THROW_LAST(); } END_CATCH } ///////////////////////////////////////////////////////////////// // CPixel CPixel::CPixel() { } CPixel::~CPixel() { } CPixel::CPixel(int i) { I = i; } ///////////////////////////////////////////////////////////////// // CColorPixelPtr CPixelPtr::CPixelPtr(HDIB hHandle) { // ¸Þ¸ð¸® ºí·ÏÀ» °íÁ¤ LPSTR lpDIBHdr = (LPSTR) ::GlobalLock((HGLOBAL) hHandle); m_hHandle = hHandle; m_nHeight = ::DibHeight(lpDIBHdr); // À̹ÌÁöÀÇ ¼¼·Î ±æÀÌ int nWidth = WIDTHBYTES(::DibWidth(lpDIBHdr)*8); // À̹ÌÁöÀÇ °¡·Î ±æÀÌ // À̹ÌÁöÀÇ ¼¼·Î ±æÀÌ ¸¸Å­ Æ÷ÀÎÅÍ ¹è¿­ ÇÒ´ç m_pPtr = new BYTE *[m_nHeight]; // Çì´õ ´ÙÀ½¿¡ ³ª¿À´Â ù¹ø° Çȼ¿ÀÇ Æ÷ÀÎÅ͸¦ ¾òÀ½ BYTE *lpDIBBits = (BYTE *)::DibImage(lpDIBHdr); // °¡·Î ±æÀÌ ¸¸Å­¾¿ ÁøÇàÇϸç m_pPtr¿¡ À̹ÌÁöÀÇ // °¢ ÁÙÀÇ Ã¹¹ø° Çȼ¿ÀÇ ÁÖ¼Ò¸¦ µÚÁý¾î¼­ ÀúÀå for(int i=m_nHeight-1 ; i>=0 ; i--) { m_pPtr[i] = lpDIBBits; lpDIBBits += nWidth; } } CPixelPtr::~CPixelPtr() { // ¸Þ¸ð¸® ºí·ÏÀ» Ç®¾îÁÜ GlobalUnlock((HGLOBAL) m_hHandle); TRY { // ÇÒ´ç ¹Þ¾Ò´ø Æ÷ÀÎÅÍ ¹è¿­À» ÇØÁ¦ delete [] m_pPtr; } CATCH (CMemoryException, e) { THROW_LAST(); } END_CATCH }