aboutsummaryrefslogtreecommitdiff
path: root/Src/external_dependencies/openmpt-trunk/mptrack/Mainbar.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/mptrack/Mainbar.h')
-rw-r--r--Src/external_dependencies/openmpt-trunk/mptrack/Mainbar.h197
1 files changed, 197 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/mptrack/Mainbar.h b/Src/external_dependencies/openmpt-trunk/mptrack/Mainbar.h
new file mode 100644
index 00000000..65cb9188
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/mptrack/Mainbar.h
@@ -0,0 +1,197 @@
+/*
+ * 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