#if !defined(AFX_EDITIMGDLG_H__9F96191C_8F83_4C12_A2CA_7C0746212164__INCLUDED_)
#define AFX_EDITIMGDLG_H__9F96191C_8F83_4C12_A2CA_7C0746212164__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// EditImgDlg.h : ヘッダー ファイル
//

#include "DMLocPalWnd.h"
#include "DMGHLci.h"
#include "ExtBM.h"
#include "EditImgDlg.h"
#include "StaticImagePv.h"

/////////////////////////////////////////////////////////////////////////////
// CEditImgDlg ダイアログ

class DMIECiIMG4;
class DMIECiIMG8;

class CEditImgDlg : public CDialog
{
	// 
	class MemDestIo;
	// 
	class MemDestIoL2R4Bit;
	// 
	class DMExtDM1Wio;
	// 
	class C8CH;
	// 
	enum ImgTyp {
		typeNo,
		typeC4,
		typeU4,
		typeC8,
		typeU8,
	};

	// 
	CExtBM m_bm;
	// 
	BOOL m_fDisable4;
	// 
	BOOL m_fNo8bpp;
	// 
	int m_iImgTyp;
	// 
	BOOL m_fLE;
	// 
	SizeBuff m_fvNew;
	// 
	UINT m_fcx, m_fcy;
	// 
	BOOL m_fOrg4bpp;

	// 
	void RevertState();
	// 
	bool Enc4(BYTE pbLocPal16[16]);
	// 
	bool EncU4(BYTE pbLocPal16[16]);
	// 
	bool Enc8();
	// 
	bool EncU8();
	// 
	bool Enc8As(DMIECiIMG8 &ei8, MemDestIo &io, bool fIsType3);
	// 
	void OnEncFailed();
	// 
	UINT GetFactorX()
	{
		return (m_fcx >> 8) & 0xFE;
	}
	// 
	UINT GetFactorY()
	{
		return (m_fcy >> 8) & 0xFE;
	}
	// 
	BYTE GetNearestPalIdx4(COLORREF clr, RGBQUAD r4[16]);
	// 
	BYTE GetNearestPalIdx8(COLORREF clr, RGBQUAD r4[256]);
	// 
	int NormTo8(CExtBM &bmSrc, CExtBM &bmDst, BOOL fTo8);

public:
	// 
	CEditImgDlg(BOOL fNo8bpp, BOOL fLE, CWnd* pParent = NULL);
	// 
	void Init(HBITMAP hBM, DMGHLiIMGM &imgm);
	// 
	void Init();
	// 
	const SizeBuff &GetNew1() { return m_fvNew; }

// ダイアログ データ
	//{{AFX_DATA(CEditImgDlg)
	enum { IDD = IDD_EDIT_IMAGE };
	CButton	m_wndNorm8;
	CDMLocPalWnd	m_wndOrgPal;
	CButton	m_wndEncU8;
	CButton	m_wndReEnc4;
	CButton	m_wndEnc8;
	CButton	m_wndOk;
	CStaticImagePv	m_wndPreview;
	CString	m_strEncState;
	CString	m_strImgTyp;
	CDMLocPalWnd	m_wndNewPal;
	//}}AFX_DATA

// オーバーライド
	// ClassWizard は仮想関数のオーバーライドを生成します。
	//{{AFX_VIRTUAL(CEditImgDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV サポート
	//}}AFX_VIRTUAL

// インプリメンテーション
protected:

	// 生成されたメッセージ マップ関数
	//{{AFX_MSG(CEditImgDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnButtonCopy();
	afx_msg void OnButtonPaste();
	afx_msg void OnButtonEnc4();
	afx_msg void OnButtonEnc8();
	afx_msg void OnButtonReEnc4();
	afx_msg void OnButtonEncU4();
	afx_msg void OnButtonEncU8();
	afx_msg void OnButtonEditMore();
	afx_msg void OnButtonNorm4();
	afx_msg void OnButtonNorm8();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ は前行の直前に追加の宣言を挿入します。

#endif // !defined(AFX_EDITIMGDLG_H__9F96191C_8F83_4C12_A2CA_7C0746212164__INCLUDED_)
