Files
AC_Pro/ListViewPattern.h
2026-06-13 00:05:19 +08:00

102 lines
3.0 KiB
C++

//---------------------------------------------------------------------------
#ifndef ListViewPatternH
#define ListViewPatternH
//---------------------------------------------------------------------------
#include "ListViewBase.h"
#include "FavorTextureUnit.h"
#include "Compose.h"
#include "SkinHintWindow.h"
#define WIDTH_LINE 4
#define WIDTH_SB 14
#define WIDTH_IMG_PROG 0
#define WIDTH_IMG_COL 21
#define WIDTH_IMG_CHARGE 21
#define WIDTH_AVERAGE(W) ((W-WIDTH_SB-WIDTH_IMG_PROG-WIDTH_IMG_COL-WIDTH_LINE*3)/5)
#define WIDTH_PROG(W) (WIDTH_AVERAGE(W)*3)
#define WIDTH_SEG(W) (WIDTH_AVERAGE(W)-6)
#define WIDTH_STYLE(W) (WIDTH_AVERAGE(W)+6)
#define LEFT_CAPTION (WIDTH_IMG_PROG)
#define LEFT_PROG (LEFT_CAPTION)
#define LEFT_STYLE(W) (LEFT_PROG + WIDTH_PROG(W) + WIDTH_LINE)
#define LEFT_SEG(W) (LEFT_STYLE(W) + WIDTH_STYLE(W) + WIDTH_LINE)
#define LEFT_COL(W) (LEFT_SEG(W) + WIDTH_SEG(W) + WIDTH_LINE)
//---------------------------------------------------------------------------
typedef struct tagTextureInfo
{
// TPROSTYLE *styleInfo;
UINT idLoc; //位置id
UINT idStyle; //风格ID
char segType; //片段类型
char segNo; //片段号
char chNo; //轨道序号 (与FavorTexture结构不同)
char prog; //乐器号
char vol; //音量
bool bCollected;
tagTextureInfo(){
memset( this, 0, sizeof(tagTextureInfo) );
}
tagTextureInfo( UINT loc, UINT sty, char type, char sNo, char cNo, char pg, char vl, bool bCol=false ){
idLoc = loc;
idStyle = sty;
segType = type;
segNo = sNo;
chNo = cNo;
prog = pg;
vol = vl;
bCollected = bCol;
}
}TTextureInfo, *PTTextureInfo;
typedef vector<TTextureInfo*> VCPtInfo;
class TListViewPattern: public TListViewBase
{
private:
TStateBtn *m_btnHint;
TStageList* m_lstStages;
int m_iPlayBar;
virtual int __fastcall DoCellHgt(TTableView *Sender, int iCellIndex);
virtual int __fastcall DoMDNum(TTableView *Sender);
virtual void __fastcall DoCellDraw(TStateBtn *sender, int BsTmp, TRect rtTmp, TCanvas *pCanvas);
virtual int __fastcall DoCellData(TStateBtn *sender);
virtual void __fastcall DoCellLClick(TStateBtn *sender);
virtual void __fastcall DoCellDBClick(TStateBtn *sender);
virtual void __fastcall DoIconDraw(TStateBtn *sender, int BsTmp, TRect rtTmp, TCanvas *pCanvas);
virtual int __fastcall DoIconsNum(TStateBtn *parent);
virtual int __fastcall DoIconsBounds(TStateBtn *sender, TRect &rtBounds);
virtual void __fastcall DoIconLClick(TStateBtn *sender);
int m_nPlayIndex;
int m_iseed;
TNotifyEvent FOnTextureChanged;
protected:
virtual int __fastcall DoMouseWheel(TObject *Sender);
public:
bool m_bChan9;
VCPtInfo *m_LstParttern;
TTextureInfo *m_pPtInfo;
char m_iFont, m_iProg;
void __fastcall OnPartternPlay(TObject *sender);
__fastcall TListViewPattern(TComponent* Owner, bool bChan9=false, TStageList* lstStages=NULL, int iPlayBar=-1);
__fastcall ~TListViewPattern();
__published:
__property TNotifyEvent OnTextureChanged = {read=FOnTextureChanged, write=FOnTextureChanged };
};
#endif