summaryrefslogtreecommitdiffstats
path: root/src/PianoRollFrame.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/PianoRollFrame.h')
-rw-r--r--src/PianoRollFrame.h245
1 files changed, 245 insertions, 0 deletions
diff --git a/src/PianoRollFrame.h b/src/PianoRollFrame.h
new file mode 100644
index 0000000..72bdac9
--- /dev/null
+++ b/src/PianoRollFrame.h
@@ -0,0 +1,245 @@
+//******************************************************************************
+// MIDIシーケンサーソフト『世界樹』
+// ピアノロールフレームウィンドウクラス
+// (C)2002-2013 おーぷんMIDIぷろじぇくと/くず
+//******************************************************************************
+
+/* This library is free software; you can redistribute it and/or */
+/* modify it under the terms of the GNU Lesser General Public */
+/* License as published by the Free Software Foundation; either */
+/* version 2.1 of the License, or (at your option) any later version. */
+
+/* This library is distributed in the hope that it will be useful, */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU */
+/* Lesser General Public License for more details. */
+
+/* You should have received a copy of the GNU Lesser General Public */
+/* License along with this library; if not, write to the Free Software */
+/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+#ifndef _PIANOROLLFRAME_H_
+#define _PIANOROLLFRAME_H_
+
+class CPianoRollFrame : public CChildFrame {
+ DECLARE_DYNCREATE (CPianoRollFrame)
+
+ //--------------------------------------------------------------------------
+ // アトリビュート
+ //--------------------------------------------------------------------------
+protected:
+ long m_lToolBar1Height; // ツールバー1の高さ[pixel]
+ long m_lKeyHeight; // キービュー(上ペイン)の高さ[pixel]
+ long m_lScaleHeight; // 上部目盛りビューの高さ[pixel]
+ long m_lVelHeight; // ベロシティビュー(下ペイン)の高さ[pixel]
+ long m_lScaleWidth; // 左部目盛りビューの幅[pixel]
+ long m_lTimeWidth; // 時間ビュー(左ペイン)の幅[pixel]
+ long m_lHScrollBarHeight; // 水平スクロールバーの高さ[pixel]
+ long m_lVScrollBarWidth; // 垂直スクロールバーの幅[pixel]
+ long m_lTrackListWidth; // トラックリスト(右ペイン)の幅[pixel]
+ long m_lKeyZoom; // キー方向拡大倍率[倍]
+ long m_lTimeZoom; // タイム方向拡大倍率[倍]
+ long m_lVelZoom; // ベロシティ方向ズーム倍率[倍]
+ long m_lKeyScrollPos; // キー方向スクロール位置[pixel]
+ long m_lVelScrollPos; // ベロシティ方向スクロール位置[pixel]
+ long m_lTimeScrollPos; // 時間方向スクロール位置[pixel]
+public:
+ CFont m_theFont; // ピアノロールウィンドウで使うフォント
+public:
+ CSekaijuToolBar m_wndToolBar1; // ツールバー1
+ CColorfulComboBox m_wndTrackCombo; // トラックコンボボックス
+ CComboBox m_wndChannelCombo; // チャンネルコンボボックス
+ CComboBox m_wndSnapCombo; // スナップコンボボックス
+ CComboBox m_wndVelocityCombo; // ベロシティコンボボックス
+ CComboBox m_wndDurationCombo; // 音長さコンボボックス
+ CComboBox m_wndGraphKindCombo; // グラフの種類コンボボックス
+ CComboBox m_wndGraphSnapCombo; // グラフスナップコンボボックス
+ CView* m_pDummyView; // ダミービュー(Visible=FALSE)へのポインタ
+ CView* m_pPrintView; // 印刷用ビュー(Visible=FALSE)へのポインタ
+ CView* m_pScaleView; // 目盛りビューへのポインタ
+ CView* m_pTimeScaleView; // 時間目盛りビューへのポインタ
+ CView* m_pKeyScaleView; // 音階目盛りビューへのポインタ
+ CView* m_pKeyTimeView; // 音階-時間ビューへのポインタ
+ CView* m_pVelScaleView; // ベロシティ目盛りビューへのポインタ
+ CView* m_pVelTimeView; // ベロシティ-時間ビューへのポインタ
+ CCheckListBox* m_pTrackListBox; // トラックリストボックスへのポインタ
+ CCheckListBox* m_pGraphKindListBox; // グラフの種類リストボックス
+ CScrollBar m_wndTimeScroll; // 時間方向スクロールバー
+ CScrollBar m_wndKeyScroll; // 音階方向スクロールバー
+ CScrollBar m_wndVelScroll; // ベロシティ方向スクロールバー
+ CScrollBar m_wndSizeScroll; // サイズ変更スクロールバー
+ CBitmapButton m_wndTimeZoomUp; // 時間方向拡大ボタン
+ CBitmapButton m_wndTimeZoomDown; // 時間方向縮小ボタン
+ CBitmapButton m_wndVelZoomUp; // ベロシティ方向拡大ボタン
+ CBitmapButton m_wndVelZoomDown; // ベロシティ方向縮小ボタン
+ CBitmapButton m_wndKeyZoomUp; // キー方向拡大ボタン
+ CBitmapButton m_wndKeyZoomDown; // キー方向縮小ボタン
+protected:
+ CPoint m_ptMouseDown; // マウスが押されたときの座標(スプリッターを動かすのに使う)
+ CPoint m_ptMouseMoveOld; // マウスが動かされたときの前回の座標(スプリッターを動かすのに使う)
+ BOOL m_bSplitterMovingH; // 現在水平スプリッターを動かしているところか?
+ BOOL m_bSplitterMovingV; // 現在垂直スプリッターを動かしているところか?
+public:
+ BOOL m_bAutoPageUpdate; // 自動的にページを更新するか?
+ long m_lCurTool; // 現在の選択されているツール(0=描画,1=線画,2=消しゴム,3=選択,4=試聴)
+protected:
+ BOOL m_bOnlyCurTrack; // 現在のトラックのみを表示するか?
+ BOOL m_bShowAllTrack; // すべてのトラックを表示するか?
+ BOOL m_bTrackVisible[MAXMIDITRACKNUM]; // トラック[0〜65535]は可視か?
+ BOOL m_bOnlyCurGraph; // 現在のグラフのみを表示するか?
+ BOOL m_bShowAllGraph; // すべてのグラフを表示するか?
+ BOOL m_bGraphVisible[256]; // グラフ[0〜255]は可視か?
+
+ //--------------------------------------------------------------------------
+ // 構築と破壊
+ //--------------------------------------------------------------------------
+public:
+ CPianoRollFrame (); // コンストラクタ
+ virtual ~CPianoRollFrame(); // デストラクタ
+
+ //--------------------------------------------------------------------------
+ // オペレーション
+ //--------------------------------------------------------------------------
+public:
+ virtual CSekaijuDoc* GetDocument ();
+ virtual long GetTimeZoom ();
+ virtual long GetKeyZoom ();
+ virtual long GetVelZoom ();
+ virtual long XtoTime (long x);
+ virtual long TimetoX (long lTime);
+ virtual long YtoKey (long y);
+ virtual long KeytoY (long lKey);
+ virtual long YtoPitchBend (long y);
+ virtual long YtoVel (long y);
+ virtual long YtoTempoBPM (long y);
+ virtual long VeltoY (long lVel);
+ virtual long PitchBendtoY (long lPitchBend);
+ virtual long TempoBPMtoY (long lTempo);
+ virtual long GetTimeScrollPos ();
+ virtual long GetKeyScrollPos ();
+ virtual long GetVelScrollPos ();
+ virtual long SetTimeScrollPos (long lTimeScrollPos);
+ virtual long SetKeyScrollPos (long lKeyScrollPos);
+ virtual long SetVelScrollPos (long lVelScrollPos);
+ virtual long GetVisibleLeftTime ();
+ virtual long GetVisibleRightTime ();
+ virtual long GetVisibleTopKey ();
+ virtual long GetVisibleBottomKey ();
+ virtual long GetVisibleTopVel ();
+ virtual long GetVisibleBottomVel ();
+ virtual void DrawSplitterCaptor (CDC* pDC, CPoint pt);
+ virtual long GetCurTrackIndex ();
+ virtual long GetCurChannel ();
+ virtual long GetCurSnap ();
+ virtual long GetCurVelocity ();
+ virtual long GetCurDuration ();
+ virtual long GetCurGraphKind ();
+ virtual long GetCurGraphSnap ();
+ virtual BOOL SetCurTrackIndex (long lCurTrackIndex);
+ virtual BOOL SetCurChannel (long lCurChannel);
+ virtual BOOL SetCurSnap (long lCurSnap);
+ virtual BOOL SetCurVelocity (long lCurVelocity);
+ virtual BOOL SetCurDuration (long lCurDuration);
+ virtual BOOL SetCurGraphKind (long lCurGraphKind);
+ virtual BOOL SetCurGraphSnap (long lCurGraphKind);
+ virtual BOOL IsTrackVisible (long lTrackIndex);
+ virtual BOOL SetTrackVisible (long lTrackIndex);
+ virtual BOOL IsGraphVisible (long lGraphKind);
+ virtual BOOL SetGraphVisible (long lGraphKind);
+ virtual BOOL UpdateTrackCombo ();
+ virtual BOOL UpdateGraphKindCombo ();
+ virtual BOOL UpdateTrackList ();
+ virtual BOOL UpdateGraphKindList ();
+ virtual BOOL UpdateSnapCombo ();
+ virtual BOOL UpdateVelocityCombo ();
+ virtual BOOL UpdateDurationCombo ();
+ virtual BOOL UpdateGraphSnapCombo ();
+ virtual void RecalcKeyScrollInfo ();
+ virtual void RecalcVelScrollInfo ();
+ virtual void RecalcTimeScrollInfo ();
+
+
+ //--------------------------------------------------------------------------
+ // オーバーライド
+ //--------------------------------------------------------------------------
+protected:
+ virtual BOOL PreCreateWindow (CREATESTRUCT& cs);
+ virtual void OnUpdateFrameTitle (BOOL bAddToTitle);
+ virtual void RecalcLayout (BOOL bNotify = TRUE);
+ virtual BOOL OnCreateClient (LPCREATESTRUCT lpcs, CCreateContext* pContext);
+ virtual BOOL OnCmdMsg (UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
+
+ //--------------------------------------------------------------------------
+ // メッセージマップ
+ //--------------------------------------------------------------------------
+protected:
+ afx_msg int OnCreate (LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy ();
+ afx_msg void OnSize (UINT nType, int cx, int cy);
+ afx_msg void OnTimer (UINT nIDEvent);
+ afx_msg BOOL OnEraseBkgnd (CDC* pDC);
+ afx_msg void OnMDIActivate (BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd);
+ afx_msg void OnPaint ();
+ afx_msg void OnKeyDown (UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnLButtonDown (UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDown (UINT nFlags, CPoint point);
+ afx_msg void OnLButtonUp (UINT nFlags, CPoint point);
+ afx_msg void OnRButtonUp (UINT nFlags, CPoint point);
+ afx_msg void OnMouseMove (UINT nFlags, CPoint point);
+ afx_msg void OnTimeZoomDown ();
+ afx_msg void OnTimeZoomUp ();
+ afx_msg void OnKeyZoomDown ();
+ afx_msg void OnKeyZoomUp ();
+ afx_msg void OnVelZoomDown ();
+ afx_msg void OnVelZoomUp ();
+ afx_msg void OnVScroll (UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnHScroll (UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnPianoRollPen ();
+ afx_msg void OnUpdatePianoRollPenUI (CCmdUI* pCmdUI);
+ afx_msg void OnPianoRollLine ();
+ afx_msg void OnUpdatePianoRollLineUI (CCmdUI* pCmdUI);
+ afx_msg void OnPianoRollEraser ();
+ afx_msg void OnUpdatePianoRollEraserUI (CCmdUI* pCmdUI);
+ afx_msg void OnPianoRollSelect ();
+ afx_msg void OnUpdatePianoRollSelectUI (CCmdUI* pCmdUI);
+ afx_msg void OnPianoRollSpeaker ();
+ afx_msg void OnUpdatePianoRollSpeakerUI (CCmdUI* pCmdUI);
+ afx_msg void OnPianoRollOnlyCurTrack ();
+ afx_msg void OnUpdatePianoRollOnlyCurTrackUI (CCmdUI* pCmdUI);
+ afx_msg void OnPianoRollShowAllTrack ();
+ afx_msg void OnUpdatePianoRollShowAllTrackUI (CCmdUI* pCmdUI);
+ afx_msg void OnPianoRollOnlyCurGraph ();
+ afx_msg void OnUpdatePianoRollOnlyCurGraphUI (CCmdUI* pCmdUI);
+ afx_msg void OnPianoRollShowAllGraph ();
+ afx_msg void OnUpdatePianoRollShowAllGraphUI (CCmdUI* pCmdUI);
+ afx_msg void OnPianoRollAutoPageUpdate ();
+ afx_msg void OnUpdatePianoRollAutoPageUpdateUI (CCmdUI* pCmdUI);
+
+ afx_msg void OnTrackComboSelEndOK ();
+ afx_msg void OnTrackListChkChange ();
+ afx_msg void OnTrackListSelChange ();
+ afx_msg void OnGraphKindComboSelEndOK ();
+ afx_msg void OnGraphKindListChkChange ();
+ afx_msg void OnGraphKindListSelChange ();
+
+ afx_msg void OnPopupEventProperty ();
+ afx_msg void OnUpdatePopupEventPropertyUI (CCmdUI* pCmdUI);
+ afx_msg void OnPopupTrackVisibleOn ();
+ afx_msg void OnUpdatePopupTrackVisibleOnUI (CCmdUI* pCmdUI);
+ afx_msg void OnPopupTrackVisibleOff ();
+ afx_msg void OnUpdatePopupTrackVisibleOffUI (CCmdUI* pCmdUI);
+ afx_msg void OnPopupTrackVisibleAll ();
+ afx_msg void OnUpdatePopupTrackVisibleAllUI (CCmdUI* pCmdUI);
+ afx_msg void OnPopupGraphKindVisibleOn ();
+ afx_msg void OnUpdatePopupGraphKindVisibleOnUI (CCmdUI* pCmdUI);
+ afx_msg void OnPopupGraphKindVisibleOff ();
+ afx_msg void OnUpdatePopupGraphKindVisibleOffUI (CCmdUI* pCmdUI);
+ afx_msg void OnPopupGraphKindVisibleAll ();
+ afx_msg void OnUpdatePopupGraphKindVisibleAllUI (CCmdUI* pCmdUI);
+
+ DECLARE_MESSAGE_MAP()
+};
+
+
+#endif
+