//---------------------------------------------------------------------------

#ifndef SwitchTextureFormH
#define SwitchTextureFormH

//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include "ComboBoxComponent.h"
#include "PNGButton.hpp"
#include "TextButton.h"
#include "CKBox.h"
#include <Vcl.ExtCtrls.hpp>
//---------------------------------------------------------------------------
#include <Vcl.Buttons.hpp>
#include "ListViewPattern.h"
#include "GeneralDialogPanel.h"
class TSwitchTextureForm : public TForm
{

__published:	// IDE-managed Components

	TGeneralDialogPanel *m_BKGPanel;
	TTextButton *m_btnTry;
	TTextButton *m_btnCancel;
	TTextButton *m_btnInit;
	TLabel *m_lbIntro;
	TCKBox *m_ckPlay;
	TCKBox *m_ckReplaceProg;
	TLabel *m_lbOri;
	TShape *m_shapeOri;
	TShape *m_shapecheck;
	TCKBox *m_cbDrum;
	TLabel *m_lbProg;
	TLabel *m_lbType;
	TShape *m_ShapeProg;
	TShape *m_ShapeType;
	TLabel *m_lbTexture;
	TShape *m_ShapeTexture;
	TPanel *m_panType;
	TPanel *m_panProg;
	TPanel *m_panTexture;
	TShape *m_ShapeTitle;
	TLabel *Label1;
	TLabel *Label2;
	TLabel *Label3;
	TLabel *Label4;
	void __fastcall DoPartternInit(TObject *Sender);
	void __fastcall DoPartternUse(TObject *Sender);
	void __fastcall CurProgPlayClick(TObject *Sender);
	void __fastcall ReplaceProgClick(TObject *Sender);
	void __fastcall DrumClick(TObject *Sender);
	void __fastcall FormCreate(TObject *Sender);

private:	// User declarations

	bool m_bSubProg, m_bChan9, m_bSameType, m_bCollected;
	char m_cSegType, m_cFontCur, m_cProgCur,
		 m_cProgOriBac, m_cProgOri, m_cProgOriType;

	TPROSTYLE *m_pStyleOri;
	char m_cChanOri, m_cSegNoOri;

	int m_InsIndex;

	TStageList* m_lstStages;
	int m_iPlayBar;

	vector<char*> m_VCType, m_VCProg;
	vector<char>  m_VCProgSearch;
	VCPtInfo m_VCPtInfo;

	TPanelDB    *m_btnCol, *m_btnSameType;
	TListViewBase *m_LstParttern, *m_LstProgType, *m_LstProg;

	void __fastcall DoPanelFocus(TObject *Sender);
	void __fastcall DoDrawBKG(TPanelDB *Sender, TCanvas *pCanvas, TRect rtBKG);
	int  __fastcall DoTitle(TTableView *Sender);
	void __fastcall DoDrawBottom(TPanelDB *Sender, TCanvas *pCanvas, TRect rtBKG);
	int  __fastcall DoBottom(TTableView *Sender);
	void __fastcall DoDrawTitle(TPanelDB *Sender, TCanvas *pCanvas, TRect rtBKG);
	void __fastcall DoDrawBtn(TPanelDB *Sender, TCanvas *pCanvas, TRect rtBKG);

	void __fastcall InitPtStyle( STYLELIST& lstStyles );
	void __fastcall InitPtIns( TPROSTYLE* info );
	void __fastcall ReleasePt();

	void __fastcall InitPtPanel();
	void __fastcall InitTypePanel();
	void __fastcall InitProgPanel();

	void __fastcall DoPtChanged(TObject *Sender);
	void __fastcall DoProgChanged(TObject *Sender);

	void __fastcall OnTextureChanged(TObject *Sender);

public:		// User declarations

	bool m_bSetCur;
	char m_cSetFont,
		m_cSetProg,
		m_cSetProgOri,
		m_cSetSegType,
		m_cSetSegNo,
		m_cSetchan,
		m_cSetVol,
		m_cSetVolOri;

	TPROSTYLE *m_pSetStyle;

	void __fastcall InitListPanel();

	__fastcall TSwitchTextureForm(TComponent* Owner,
			char iSegType,    char iProgOri=-1,
			char iFontCur=-1, char iProgCur=-1,
			TPROSTYLE *pStyleOri=NULL, char chanOri=-1, char segNoOri=-1,
			TStageList* lstStages=NULL, int iPlayBar=-1);
	__fastcall ~TSwitchTextureForm();
};
//---------------------------------------------------------------------------
extern PACKAGE TSwitchTextureForm *SwitchTextureForm;
//---------------------------------------------------------------------------
#endif


