///////////////////////////////////////////////////////////////////////////// // Image.h : header file // #ifndef __IMAGE_H__ #define __IMAGE_H__ HGLOBAL WINAPI CopyHandle (HGLOBAL h); #define RECTWIDTH(lpRect) ((lpRect)->right - (lpRect)->left) #define RECTHEIGHT(lpRect) ((lpRect)->bottom - (lpRect)->top) // Á¡ÀÇ »ö»ó typedef struct tagRGB { BYTE r; BYTE g; BYTE b; } RGBT; // À̹ÌÁö¸¦ ó¸® Çϱâ À§ÇÑ Å¬·¡½º // ¿©·¯ Æ÷¸ËÀÇ À̹ÌÁö¸¦ ÀÐ¾î ¿Ã ¼ö´Â ÀÖÁö¸¸ // Àоî¿Â ÈÄ À̹ÌÁö¸¦ 24-bit Æ÷¸ËÀ¸·Î º¯°æÇÏ¿© // À̹ÌÁö ÀÛ¾÷À» ÇÑ´Ù. class CImage { protected: BITMAPINFOHEADER m_biHeader; // Image header HGLOBAL m_hImage; // Image handle - RGB(24-bit) format image // »ö»ó ä¿ì±â¿Í »ö»ó ¹Ù²Ù±â¿¡ »ç¿ëµÈ´Ù. RGBT m_rgbMask; // º¯°æµÇ¾î¾ß ÇÏ´Â »ö»ó RGBT m_rgbLine; // º¯°æÇÒ ¼ö ¾ø´Â »ö»ó private: void DrawPixel(); BYTE m_sr, m_sg, m_sb; BYTE m_dr, m_dg, m_db; BYTE *m_pAddress; long m_nIndex; public: void FillSide(long nMode, long nSize, CImage &image); COLORREF GetColor(long x, long y); void Blur(); void ScrollImage(CImage &image, long nStartY, long nEndY); BYTE GetB(BYTE *address, long x, long y); BYTE GetG(BYTE *address, long x, long y); BYTE GetR(BYTE *address, long x, long y); void ColorRound(COLORREF crTarget, COLORREF crRound, long nSize); BOOL MaskCopy(BYTE r, BYTE g, BYTE b, CImage &image); BOOL MaskCopy2(CImage &image); // »ý¼ºÀÚ, ÃʱâÈ­ ÇÔ¼ö CImage(); CImage(CImage &src); CImage(CBitmap &src); CImage& operator=(CImage &src); BOOL Create(long width, long height); // ¼Ò¸êÀÚ, Á¤¸® ÇÔ¼ö virtual ~CImage() {Free();} void Free(); // À̹ÌÁö Á¤º¸¸¦ ¾ò´Â ÇÔ¼ö BOOL IsDataNull() {return (m_hImage == NULL);} HGLOBAL GetHandle() {return m_hImage;} long GetHeight() {return m_biHeader.biHeight;} long GetWidth() {return m_biHeader.biWidth;} long GetRealWidth() {return ((m_biHeader.biWidth * 3 + 3) & ~3);} long GetBitCount() {return m_biHeader.biBitCount;} void SetLineColor(BYTE r, BYTE g, BYTE b); RGBT GetLineColor(); BOOL CheckColor(BYTE r, BYTE g, BYTE b); BOOL SetMaskColor(BYTE r, BYTE g, BYTE b); RGBT GetMaskColor(); // ±×¸®±â BOOL Draw(HDC hDC, long x, long y); BOOL Draw(HDC hDC, LPRECT destRect); BOOL Draw(HDC hDC, LPRECT sourceRect, LPRECT destRect); BOOL FillColor(long x, long y, BYTE r, BYTE g, BYTE b); BOOL FillColor(long x, long y, CImage &image); BOOL Mask(BYTE r, BYTE g, BYTE b); void Treshold(long nTreshold); void Zoom(long width, long height); // ÆÄÀÏ Àоî¿À±â, ÀúÀåÇϱâ BOOL Save(LPCTSTR lpszFileName); BOOL Load(LPCTSTR lpszFileName); protected: HGLOBAL ConvertToDIB(); BOOL ConvertToImage(HGLOBAL hDIB); BITMAPINFOHEADER GetHeader() {return m_biHeader;} void CircleQuad1(BYTE *address, long nCenterX, long nCenterY, long radius); void CircleQuad2(BYTE *address, long nCenterX, long nCenterY, long radius); void CircleQuad3(BYTE *address, long nCenterX, long nCenterY, long radius); void CircleQuad4(BYTE *address, long nCenterX, long nCenterY, long radius); void ZoomInY(BYTE * desImage, long sdx, long sdy, long ddy); void ZoomInX(BYTE * desImage, long sdx, long sdy, long ddx); CImage * ZoomOutY(BYTE *srcImage, long dx, long dy, long ddy); CImage * ZoomOutX(BYTE *srcImage, long dx, long dy, long ddx); // ½ÇÁ¦ ÆÄÀÏ Àоî¿À±â BOOL LoadBMP(LPCTSTR lpszFileName); BOOL LoadGIF(LPCTSTR lpszFileName); BOOL LoadJPG(LPCTSTR lpszFileName); // ½ÇÁ¦ ÆÄÀÏ ÀúÀåÇϱâ BOOL SaveBMP(LPCTSTR lpszFileName); // BOOL SaveGIF(LPCTSTR lpszFileName); BOOL SaveJPG(LPCTSTR lpszFileName); }; ///////////////////////////////////////////////////////////////////////////// #endif