// ImageGif.h: interface for the CImageGif class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_GIFFILE_H__5413A2E1_F77E_11D4_ADD3_000102638FDB__INCLUDED_) #define AFX_GIFFILE_H__5413A2E1_F77E_11D4_ADD3_000102638FDB__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "GifHeader.h" #define GIF_INTRODUSER 33 // 0x21 #define GIF_EXT_APPLICATION 255 // 0xFF #define GIF_EXT_COMMENT 254 // 0xFE #define GIF_EXT_GRAPHIC_CTRL 249 // 0xF9 #define GIF_EXT_PLAIN_TEXT 1 // 0x01 #define GIF_DESC_IMAGE 44 // 0x2C #define GIF_TRAILER 59 // 0x3B #define GIF_TERMINATOR 0 // block terminator #define MASK_BGCOLOR 255 // Gif ÆÄÀÏÀ» 8-bit Æ÷¸ËÀ¸·Î °íÁ¤ÇÑ´Ù. // DIB·Î »ç¿ëÇϱâ À§Çؼ­´Â ConvertToDIB()¸¦ »ç¿ëÇÑ´Ù. class CImageGif { public: CImageGif(); virtual ~CImageGif(); SGifHeader m_header; SGifColorTable *m_globalColorTable; SGifImage *m_image; SGifImage *m_current; // ÀúÀåÇÒ À̹ÌÁö Æ÷ÀÎÅÍ. SGifGraphicControlExt *m_graphicControl; SGifPlainTextExt *m_plainText; SGifApplicationExt *m_application; SGifCommentExt *m_comment; BOOL Load(LPCTSTR fileName); BOOL Play(CDC *pDC); void RealPlay(); void Move(int x, int y); BOOL ConvertToImage(HGLOBAL handle); // À̹ÌÁö¸¸À» DIB·Î ¹Ù²Û´Ù, Á¤º¸´Â µû·Î °íÃÄÁÖ¾î¾ß ÇÑ´Ù. HBITMAP ConvertToBitmap(HDC hDC); protected: BOOL AddGraphicControl(); BOOL AddPlainText(); BOOL AddApplication(); BOOL AddComment(); // for image data stream BYTE *m_stream; unsigned long m_size; // Size of stream unsigned long m_index; // Work-index of stream BYTE ReadByte(); BOOL ReadN(BYTE *array, int n); // for LZW compression unsigned long m_code; // ÃÖ´ë ¿ä±¸ 12-bit¿Í Ãß°¡ 8-bit¸¦ °í·ÁÇØ WORD°¡ ¾Æ´Ñ DWORD·Î »ç¿ë. WORD m_codeSize; // ¿ä±¸ÇÏ´Â bit Å©±â. WORD m_remain; // ³²¾ÆÀÖ´Â bit Å©±â. BYTE m_readBlock; // stream¸¦ ÀоîµéÀ̱â À§ÇÑ Å©±â WORD ReadCode(); // Read LZW code // for output long m_x, m_y; // À̹ÌÁö ÀúÀå À§Ä¡. long m_pass; // for interlaced-mode void Output(BYTE pixel); // for managing void SetDecode(); BOOL AddImage(); // for Play // long m_playState; // long m_playSpeed; unsigned long m_startTime; unsigned long m_endTime; CDC *m_pDC; void Delete(); }; #endif // !defined(AFX_GIFFILE_H__5413A2E1_F77E_11D4_ADD3_000102638FDB__INCLUDED_)