Files
AccompanyCube/ComposeFormUnit.h
2026-06-13 00:10:11 +08:00

220 lines
7.2 KiB
C++

//---------------------------------------------------------------------------
#ifndef ComposeFormUnitH
#define ComposeFormUnitH
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.Imaging.jpeg.hpp>
#include <Vcl.Imaging.pngimage.hpp>
#include "PNGButton.hpp"
#include "ComposePanelUnit.h"
#include <Vcl.Graphics.hpp>
#include "PopMenuUnit.h"
#include "ComposeListBoxUnit.h"
#include "SkinHintWindow.h"
#include "BackgroundForm.h"
//---------------------------------------------------------------------------
class TComposeForm : public TBackgroundForm
{
__published: // IDE-managed Components
// TImage *m_imgBk;
// TImage *m_imgBottomSide;
// TImage *m_imgLeftBottomConner;
// TImage *m_imgRightSide;
// TImage *m_imgRightBottomConner;
TImage *m_imgBreakH;
TImage *m_imgBreakI;
TImage *m_imgBreakR;
TPNGButton *m_btnNextStep;
TPNGButton *m_btnPrevStep;
TPNGButton *m_btnRecord;
TPNGButton *m_btnStop;
TPNGButton *m_btnPlay;
TPNGButton *m_btnPause;
ComposePanelUnit::TPanel *m_panelBarsShow;
TPNGButton *m_btnVolAudioSet;
Vcl::Extctrls::TPanel *m_panelAudioVolSet;
TImage *m_imgAudioVolSet;
TPNGButton *m_btnAudioVolPos;
TPNGButton *m_btnVolMusicSet;
Vcl::Extctrls::TPanel *m_panelMusicVolSet;
TImage *m_imgMusicVolSet;
TPNGButton *m_btnMusicVolPos;
TPNGButton *m_btnStyleChange;
Vcl::Extctrls::TPanel *m_panelStyleName;
TImage *m_imgStyleNameBk;
Vcl::Extctrls::TPanel *m_panelMusicInfo;
TImage *m_imgMusicInfoBk;
TLabel *m_lblPlayTime;
TLabel *m_lblBeat;
TLabel *m_lblTempo;
TLabel *m_lblKey;
TLabel *m_lblDiao;
TLabel *m_lblStyleName;
ComposeListBoxUnit::TListBox *m_lbResource;
ComposeListBoxUnit::TListBox *m_lbCompose;
TImage *m_imgResourceHead;
TImage *m_imgComposeHead;
TImage *m_imgComposeTool;
Vcl::Extctrls::TPanel *m_panelResource;
Vcl::Extctrls::TPanel *m_panelCompose;
TPNGButton *m_btnAdd;
TPNGButton *m_btnMoveUp;
TPNGButton *m_btnMoveDown;
TPNGButton *m_btnComposeMin;
TPNGButton *m_btnResourceMin;
TPNGButton *m_btnResourceClose;
TPNGButton *m_btnComposeClose;
TPNGButton *m_btnComposeMax;
TPNGButton *m_btnResourceMax;
Vcl::Extctrls::TPanel *m_panelComposeBottom;
Vcl::Extctrls::TPanel *m_panelListIcon;
TImage *m_imgResourceIcon;
TImage *m_imgComposeIcon;
TPNGButton *m_btnResourceOpen;
TPNGButton *m_btnComposeOpen;
TImage *m_imgDelete;
TPNGButton *m_btnAudioEffect;
TPNGButton *m_btnMicSet;
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
void __fastcall FormActivate(TObject *Sender);
void __fastcall StepClick(TObject *Sender);
void __fastcall PlayClick(TObject *Sender);
void __fastcall StopClick(TObject *Sender);
void __fastcall PauseClick(TObject *Sender);
void __fastcall PlayTimeClick(TObject *Sender);
void __fastcall BtnVolSetClick(TObject *Sender);
void __fastcall ImgVolSetMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall BtnVolPosMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall BtnVolPosMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
void __fastcall BtnVolPosMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall BarsShowMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall ListBoxMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall StageMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
void __fastcall StageMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
// void __fastcall LBFontSelectMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall StageMouseLeave(TObject *Sender);
void __fastcall BtnListMinClick(TObject *Sender);
void __fastcall BtnListMaxClick(TObject *Sender);
void __fastcall BtnListCloseClick(TObject *Sender);
void __fastcall BtnListShowClick(TObject *Sender);
void __fastcall BtnAddClick(TObject *Sender);
void __fastcall BtnMoveClick(TObject *Sender);
void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift);
void __fastcall BtnStyleChangeClick(TObject *Sender);
// void __fastcall BtnFontChangeClick(TObject *Sender);
void __fastcall FormDeactivate(TObject *Sender);
void __fastcall AudioEffectClick(TObject *Sender);
void __fastcall MicSetClick(TObject *Sender);
private: // User declarations
//音量相关
int m_nAudioVolPos,
m_nMusicVolPos,
m_yPosDragBegin;
bool m_bPosDraging;
//播放/显示相关
int m_iStartBar,
m_iLastStartBar,
m_nTotalBarNum;
double m_dblStartPoint,
m_dblLastStartPoint;
UINT m_tTimer, m_tAccuracy, m_tMusicLen;
//编曲相关
int m_iLastStyleID;
//菜单操作相关
TPopMenu * m_pPopMenu;
int m_iPopBar, m_iPopPoint;
//拖动操作相关
TImage *m_imgDrag;
bool m_bDraging;
int m_iDragingIndex,
m_xImgDrag,
m_yImgDrag; //透明图片相对于鼠标的位置
TBitmap *m_bmpDeleteNormal,
*m_bmpDeleteHover;
//信息显示相关
int m_iHintStage;
TSkinHintWindow *m_pStageInfoWnd;
TTimer *m_pTimerHint;
TObject *m_pHintObject;
//列表位置相关
int m_iResListTop,
m_nResListHeight,
m_iComListTop,
m_nComListHeight;
// void AutoCompose();
void InitResourceList();
void ResetComposeList();
void CalcListSize();
void CheckOperationState();
void DrawDragImg( TObject* Sender, int iSelIndex );
void AddStage( int iMelodyStage );
void DeleteStage( int iComposeStage );
// bool Compose(bool bCombineSong);
void ShowPlayTime();
void SetFocusStage( int iSelIndex );
void BarsLButtonDown( int iHitType, int iHitBar, int iHitPoint, int X, int Y );
void BarsRButtonDown( int iHitType, int iHitBar, int iHitPoint, int X, int Y );
void __fastcall HintTimerProc(TObject* Sender);
void __fastcall OnSelectStageVar( TObject* Sender );
void __fastcall OnSelectBarFill( TObject* Sender );
void __fastcall OnAddStage( TObject* Sender );
void __fastcall OnDeleteStage( TObject* Sender );
void __fastcall OnSetStageStyle( TObject* Sender );
MESSAGE void __fastcall UMMediaTime(TMessage &Message);
// MESSAGE void __fastcall UMEnableReload(TMessage &Message);
MESSAGE void __fastcall UMSelectStyle(TMessage &msg);
MESSAGE void __fastcall UMReload(TMessage &msg);
MESSAGE void __fastcall UMSetFontPosition(TMessage &msg);
MESSAGE void __fastcall UMHidePopControl(TMessage &msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MSG_MEDIATIME, TMessage, UMMediaTime)
// MESSAGE_HANDLER(UM_ENABLERELOAD, TMessage, UMEnableReload)
MESSAGE_HANDLER(UM_SELECTSTYLE, TMessage, UMSelectStyle)
MESSAGE_HANDLER(UM_RELOAD, TMessage, UMReload)
MESSAGE_HANDLER(UM_SETFONTPOSITION, TMessage, UMSetFontPosition)
MESSAGE_HANDLER(UM_HIDEPOPCONTROL, TMessage, UMHidePopControl)
MESSAGE_HANDLER(WM_ERASEBKGND, TWMEraseBkgnd, WMEraseBkgnd)
END_MESSAGE_MAP(TForm)
public: // User declarations
__fastcall TComposeForm(TComponent* Owner);
void __fastcall ChangeChordMode( bool bAlpha );
};
//---------------------------------------------------------------------------
extern PACKAGE TComposeForm *ComposeForm;
//---------------------------------------------------------------------------
#endif