//--------------------------------------------------------------------------- #ifndef StyleItemH #define StyleItemH //--------------------------------------------------------------------------- #include "ProCommon.h" #define SEGTYPE_STYLE -1 #define SEGTYPE_SEGMENT 0x00 #define SEGTYPE_TRACK 0x04 #define COL_FOLD 0x01 #define COL_MUTE 0x01 #define COL_TEXT 0x02 #define COL_OPT 0x04 #define COL_UNDO 0x100 #define OPT_DEL 0x01 #define OPT_DOWNLOAD 0x02 #define OPT_VOL 0x04 #define OPT_BRUSH 0x08 #define OPT_FONTPROG 0x10 #define OPT_TEXTURE 0x20 #define OPT_COLLECT 0x40 //add by laq #define OPT_SCORE 0x80 #define OPT_SAVE 0x100 #define OPT_IMPORT 0x200 #define OPT_UPLOAD 0x400 #define OPT_CHARGE 0x800 #define OPT_NUM 12 #define OPT_COL_NUM 5 #define GAP_X 4 #define OPTION_HEIGHT 18 #define OPTION_WIDTH 21 #define STATE_FOCUS 0x01 #define STATE_SELECTED 0x02 #define STATE_UNFOLD 0x04 #define STATE_COLLECTED 0x08 #define STATE_MUTED 0x10 #define STATE_UNLOAD 0x20 #define STATE_LOADING 0x40 #define STATE_HOVER 0x80 class TStyleItem; class TCommonItem { public: WORD dwState; //Focus/Fold/Mute/Selected char iType; //STYLE/VAR/FILL/INTRO/ENDING/TRACK WORD iFocusCol; //Fold/文本/删除/还原/音量/音色 System::Classes::TList* aOptions; System::Classes::TList* aItems; TCommonItem *prev, *next, *up; __fastcall TCommonItem(); __fastcall TCommonItem( char iType, DWORD opts=0 ); __fastcall ~TCommonItem(); virtual void __fastcall DrawItem( TCanvas* Canvas, TRect Rect, WORD iCol ); virtual short __fastcall GetColume( int X ); virtual void ClearSubItems(); virtual String GetCaption(){ return ""; }; virtual void AddStyleId( String& strText ){}; virtual char GetSegType(){ return -1; }; virtual char GetSegNo(){ return -1; }; virtual bool IsMute(){ return false; }; virtual void SetMute( bool bSet ){}; virtual COLORREF TextColor(); virtual String HintText(){ return ""; }; virtual bool IsCollected(){ return false; }; DWORD GetOption( int iCol ); void RemoveSubItem( TCommonItem* pSub ); // bool StyleChanged(); bool IsUnfold(); bool IsSelected(); int GetOnlineState(); void SetOnlineState( int iState ); TStyleItem* GetStyleItem(); void __fastcall SetFocus( WORD iCol ); void __fastcall SetUnfold( bool bSet ); void __fastcall Select( bool bSet ); void __fastcall SetHover( bool bSet ); // void __fastcall SetCollect( bool bSet ); }; class TTrackItem : public TCommonItem { public: TPROSTYLE* pStyle; //所属风格信息 TTrack* pTrack; bool bOwnTrack; __fastcall TTrackItem(); __fastcall TTrackItem( TCommonItem* pUpItem, TPROSTYLE* info, char stype, char sno, char ch, char prog, char vol, DWORD opts ); __fastcall TTrackItem( TCommonItem* pUpItem, TPROSTYLE* info, TTrack* pTrk, DWORD opts, bool bOwn ); __fastcall ~TTrackItem(); void StyleId2Str( String& strText ); virtual String GetCaption(); virtual void AddStyleId( String& strText ); virtual char GetSegType(); virtual char GetSegNo(); virtual bool IsMute(); virtual COLORREF TextColor(); virtual String HintText(); virtual bool IsCollected(); virtual void SetMute( bool bSet ); }; class TSegmentItem : public TCommonItem { public: char iSegType; char iSegNo; char iInd; char volume; int nBars; bool bAutoSpec; bool aChanUsed[16]; __fastcall TSegmentItem(); __fastcall TSegmentItem( TCommonItem* pUpItem, char stype, char sno, DWORD opts, int bars, char ind, char vol, bool bSpec=true ); TTrackItem* __fastcall AddTrack( TPROSTYLE* info, TTrack* pTrack, DWORD opts, bool bOwn, int iInd=-1 ); TTrackItem* __fastcall AddTrack( TPROSTYLE* info, char sno, char ch, char prog, char vol, DWORD opts ); TTrackItem* __fastcall AddTrack( TPROSTYLE* info, char sn, char tn, DWORD opts, bool bAddLocal ); virtual void ClearSubItems(); virtual char GetSegType(){ return iSegType; }; virtual char GetSegNo(){ return iSegNo; }; virtual String GetCaption(); virtual COLORREF TextColor(); void DeleteTrack( TCommonItem* pTrack ); bool IsChanUsed( char ch ){ return aChanUsed[ch]; }; char GetIndType(); }; class TStyleItem : public TCommonItem { public: TPROSTYLE* pStyle; //原始风格信息 int nBars; int nSegNum[4]; __fastcall TStyleItem(); __fastcall TStyleItem( TPROSTYLE* info, DWORD opts ); TSegmentItem* __fastcall AddSegment( char stype, char sno, DWORD opts, int bars=0, char ind=-1, char vol=100, bool bAutoSpec=true ); virtual String GetCaption(); virtual void AddStyleId( String& strText ); virtual String HintText(); virtual bool IsCollected(); void InsertSegment( int ind, TSegmentItem* pSeg, int bars ); void DeleteSegment( TCommonItem* pSeg ); void SetDownload(); void SetImport(); //设置导入MIDI片段 void SetUpload(); //设置上传发布标志 void SetCharge( bool bSet ); //设置收费标记 }; typedef vector TTrackItemList; typedef vector TSegmentList; String GetProgName( BYTE iBank, BYTE iChan, BYTE iProg ); extern TStyleItem *g_pPreStyle, *g_pUseStyle; #endif