// SketonVeirify.hpp: interface for the SkeletonVerifyPanel class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SKELETONVEIRIFY_HPP__C28B8016_1AA9_11D3_9167_00609712FBEF__INCLUDED_)
#define AFX_SKELETONVEIRIFY_HPP__C28B8016_1AA9_11D3_9167_00609712FBEF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


#ifndef __AFXWIN_H__
	#error include 'stdafx.h' before including this file for PCH
#endif


#ifdef STRICT							// Already defined by stdafx,
#undef STRICT							// so we avoid warning linking msg
#endif
#ifdef _MBCS							// The same as above
#undef _MBCS
#endif

#include "AnimationSuite.h"

typedef int (*LPSKELETONVERIFY_CALLBACKFN)(int,INode *,LPVOID);

class SkeletonVerifyPanel : public UtilityObj  
{
protected:
    HINSTANCE		m_hInstance;
	IUtil*			m_iu;
	HWND			m_hPanel, m_hQuickFile;

public:
	Interface*		m_ip;
    SkeletonVerifyPanel() {};
    virtual ~SkeletonVerifyPanel() {};

	// Overides of the UtilityObj class
	void BeginEditParams(Interface* ip, IUtil* iu);
	void EndEditParams(Interface* ip, IUtil* iu);
	void DeleteThis()						{}
	void Init(HWND hWnd);
	void Destroy(HWND hWnd);
	void OnErrorCheck(LPSKELETONVERIFY_CALLBACKFN pFn);
	int CheckBatch(LPSKELETONVERIFY_CALLBACKFN pFn,Interface *,char *);
	int HandleSelChange(HWND);
	int SkeletonVerify(LPSKELETONVERIFY_CALLBACKFN pFn, LPVOID lpVoid);
	int SkeletonCompare(LPSKELETONVERIFY_CALLBACKFN,LPVOID);
	int InitCompareMap();

private:
	int CompareNode(INode *pNode,LPSKELETONVERIFY_CALLBACKFN pFn,LPVOID lpVoid);
	int VerifyNode(INode *pNode,LPSKELETONVERIFY_CALLBACKFN pFn,LPVOID lpVoid);
	int CheckCv(INode *pNode);
	int AddNode(INode *pNode);
};

#endif // !defined(AFX_SKELETONVEIRIFY_HPP__C28B8016_1AA9_11D3_9167_00609712FBEF__INCLUDED_)
