123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- /*
- * Mainbar.h
- * ---------
- * Purpose: Implementation of OpenMPT's window toolbar.
- * Notes : (currently none)
- * Authors: OpenMPT Devs
- * The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
- */
- #pragma once
- #include "openmpt/all/BuildSettings.hpp"
- #include "UpdateToolTip.h"
- OPENMPT_NAMESPACE_BEGIN
- class CStereoVU: public CStatic
- {
- protected:
- uint8 numChannels;
- uint32 vuMeter[4];
- DWORD lastVuUpdateTime;
- int lastV[4];
- bool lastClip[4];
- bool horizontal;
- bool allowRightToLeft;
- public:
- CStereoVU() { numChannels = 2; MemsetZero(vuMeter); lastVuUpdateTime = timeGetTime(); horizontal = true; MemsetZero(lastV); MemsetZero(lastClip); allowRightToLeft = false; }
- void SetVuMeter(uint8 validChannels, const uint32 channels[4], bool force=false);
- void SetOrientation(bool h) { horizontal = h; }
- protected:
- void DrawVuMeters(CDC &dc, bool redraw=false);
- void DrawVuMeter(CDC &dc, const CRect &rect, int index, bool redraw=false);
- protected:
- afx_msg void OnPaint();
- afx_msg void OnLButtonDown(UINT, CPoint);
- DECLARE_MESSAGE_MAP();
- };
- #define MIN_BASEOCTAVE 0
- #define MAX_BASEOCTAVE 8
- class CSoundFile;
- class CModDoc;
- class CModTree;
- class CMainFrame;
- class CToolBarEx: public CToolBar
- {
- protected:
- bool m_bVertical = false, m_bFlatButtons = false;
- public:
- CToolBarEx() {}
- ~CToolBarEx() override {}
- public:
- BOOL EnableControl(CWnd &wnd, UINT nIndex, UINT nHeight=0);
- void ChangeCtrlStyle(LONG lStyle, BOOL bSetStyle);
- void EnableFlatButtons(BOOL bFlat);
- public:
- //{{AFX_VIRTUAL(CToolBarEx)
- CSize CalcDynamicLayout(int nLength, DWORD dwMode) override;
- virtual void SetHorizontal();
- virtual void SetVertical();
- //}}AFX_VIRTUAL
- };
- class CMainToolBar: public CToolBarEx
- {
- protected:
- UpdateToolTip m_tooltip;
- CImageListEx m_ImageList, m_ImageListDisabled;
- CStatic m_EditTempo, m_EditSpeed, m_EditOctave, m_EditRowsPerBeat;
- CStatic m_StaticTempo, m_StaticSpeed, m_StaticRowsPerBeat;
- CSpinButtonCtrl m_SpinTempo, m_SpinSpeed, m_SpinOctave, m_SpinRowsPerBeat;
- int nCurrentSpeed, nCurrentOctave, nCurrentRowsPerBeat;
- TEMPO nCurrentTempo;
- public:
- CStereoVU m_VuMeter;
- public:
- CMainToolBar() {}
- ~CMainToolBar() override {}
- protected:
- void SetRowsPerBeat(ROWINDEX nNewRPB);
- public:
- //{{AFX_VIRTUAL(CMainToolBar)
- void SetHorizontal() override;
- void SetVertical() override;
- //}}AFX_VIRTUAL
- public:
- #if MPT_COMPILER_CLANG
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Woverloaded-virtual"
- #endif // MPT_COMPILER_CLANG
- BOOL Create(CWnd *parent);
- #if MPT_COMPILER_CLANG
- #pragma clang diagnostic pop
- #endif // MPT_COMPILER_CLANG
- void Init(CMainFrame *);
- UINT GetBaseOctave() const;
- BOOL SetBaseOctave(UINT nOctave);
- BOOL SetCurrentSong(CSoundFile *pModDoc);
- bool ShowUpdateInfo(const CString &newVersion, const CString &infoURL, bool showHighLight);
- void RemoveUpdateInfo();
- protected:
- //{{AFX_MSG(CMainToolBar)
- afx_msg void OnVScroll(UINT, UINT, CScrollBar *);
- afx_msg void OnTbnDropDownToolBar(NMHDR* pNMHDR, LRESULT* pResult);
- afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
- afx_msg void OnSelectMIDIDevice(UINT id);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- class CModTreeBar: public CDialogBar
- {
- protected:
- enum Status
- {
- MTB_VERTICAL = 0x01,
- MTB_CAPTURE = 0x02,
- MTB_DRAGGING = 0x04,
- MTB_TRACKER = 0x08,
- };
- DWORD m_dwStatus = 0; // MTB_XXXX
- UINT m_nCursorDrag = 0;
- CPoint ptDragging;
- UINT m_cxOriginal = 0, m_cyOriginal = 0, m_nTrackPos = 0;
- UINT m_nTreeSplitRatio = 0;
- public:
- CModTree *m_pModTree = nullptr, *m_pModTreeData = nullptr;
- CModTreeBar();
- ~CModTreeBar() override;
- public:
- void Init();
- void RecalcLayout();
- void DoMouseMove(CPoint point);
- void DoLButtonDown(CPoint point);
- void DoLButtonUp();
- void CancelTracking();
- void OnInvertTracker(UINT x);
- void RefreshDlsBanks();
- void RefreshMidiLibrary();
- void OnOptionsChanged();
- void OnDocumentCreated(CModDoc *pModDoc);
- void OnDocumentClosed(CModDoc *pModDoc);
- void OnUpdate(CModDoc *pModDoc, UpdateHint hint, CObject *pHint = nullptr);
- void UpdatePlayPos(CModDoc *pModDoc, Notification *pNotify);
- HWND GetModTreeHWND(); //rewbs.customKeys
- LRESULT SendMessageToModTree(UINT cmdID, WPARAM wParam, LPARAM lParam);
- bool SetTreeSoundfile(FileReader &file);
- protected:
- //{{AFX_VIRTUAL(CModTreeBar)
- CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz) override;
- //}}AFX_VIRTUAL
- protected:
- //{{AFX_MSG(CModTreeBar)
- afx_msg void OnNcPaint();
- afx_msg LRESULT OnNcHitTest(CPoint point);
- afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
- afx_msg void OnSize(UINT nType, int cx, int cy);
- afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);
- afx_msg void OnMouseMove(UINT nFlags, CPoint point);
- afx_msg void OnNcLButtonDown(UINT, CPoint);
- afx_msg void OnLButtonDown(UINT, CPoint);
- afx_msg void OnNcLButtonUp(UINT, CPoint);
- afx_msg void OnLButtonUp(UINT, CPoint);
- afx_msg void OnNcRButtonDown(UINT, CPoint) { CancelTracking(); }
- afx_msg void OnRButtonDown(UINT, CPoint) { CancelTracking(); }
- afx_msg LRESULT OnInitDialog(WPARAM, LPARAM);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- OPENMPT_NAMESPACE_END
|