summaryrefslogtreecommitdiffstats
path: root/src/TrackListFrame.h
blob: aece3215c51db297521f5f2eea57dc793bdc27e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
//******************************************************************************
// MIDIシーケンサーソフト『世界樹』
// トラックリストフレームウィンドウクラス
// (C)2002-2012 おーぷん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 */

#define TRACKLISTFRAME_NUMCOLUMN 21

#define TRACKLISTFRAME_TRACKNAME     0x01
#define TRACKLISTFRAME_VISIBLE       0x30
#define TRACKLISTFRAME_ENABLE        0x31
#define TRACKLISTFRAME_VIEWMODE      0x33
#define TRACKLISTFRAME_FORECOLOR     0x34
#define TRACKLISTFRAME_BACKCOLOR     0x35
#define TRACKLISTFRAME_INPUTON       0x36
#define TRACKLISTFRAME_INPUTPORT     0x37
#define TRACKLISTFRAME_INPUTCHANNEL  0x38
#define TRACKLISTFRAME_OUTPUTON      0x39
#define TRACKLISTFRAME_OUTPUTPORT    0x3A
#define TRACKLISTFRAME_OUTPUTCHANNEL 0x3B
#define TRACKLISTFRAME_TIMEPLUS      0x3C
#define TRACKLISTFRAME_KEYPLUS       0x3D
#define TRACKLISTFRAME_VELOCITYPLUS  0x3E
#define TRACKLISTFRAME_NUMEVENT      0xFF
#define TRACKLISTFRAME_CONTROLCHANGE 0xB0
#define TRACKLISTFRAME_PROGRAMCHANGE 0xC0

#ifndef _TRACKLISTFRAME_H_
#define _TRACKLISTFRAME_H_

class CTrackListFrame : public CChildFrame {
	DECLARE_DYNCREATE (CTrackListFrame)

	//--------------------------------------------------------------------------
	// アトリビュート
	//--------------------------------------------------------------------------
protected:
	long m_lToolBar1Height;             // ツールバーの高さ[pixel]
	long m_lScaleHeight;                // 上部目盛りビューの高さ[pixel]
	long m_lScaleWidth;                 // 左部目盛りビューの幅[pixel]
	long m_lTrackHeight;                // トラックビューの高さ[pixel]
	long m_lModeWidth;                  // モードビュー(左ペイン)の幅[pixel]
	long m_lTimeWidth;                  // タイムビュー(右ペイン)の幅[pixel]
	long m_lHScrollBarHeight;           // 水平スクロールバーの高さ[pixel]
	long m_lVScrollBarWidth;            // 垂直スクロールバーの幅[pixel]
	long m_lColumnZoom;                 // 列方向拡大倍率[倍]
	long m_lTimeZoom;                   // 時間方向拡大倍率[倍]
	long m_lRowZoom;                    // 行方向拡大倍率[倍]
	long m_lColumnScrollPos;            // 列方向スクロール位置[pixel]
	long m_lTimeScrollPos;              // 時間方向スクロール位置[pixel]
	long m_lRowScrollPos;               // 行方向スクロール位置[pixel]
	long m_lColumnBaseWidth[TRACKLISTFRAME_NUMCOLUMN];  // 各列の幅(拡大倍率をかけていない)[pixel]
	CString m_strColumnTitle[TRACKLISTFRAME_NUMCOLUMN]; // 各列のタイトル文字列
	long m_lColumnContent[TRACKLISTFRAME_NUMCOLUMN];    // 各列の表示内容識別コード
	// 各列の表示内容識別コードは、
	// TRACKLISTFRAME_TRACKNAME〜TRACKLISTFRAME_PROGRAMCHANGEの中から選択する。
	// TRACKLISTFRAME_CONTROLCHANGEでは9〜16ビット目でCC#番号を指定する。

public:
	CSekaijuToolBar m_wndToolBar1;      // ツールバー
	CView* m_pDummyView;                // ダミービュー(Visible=FALSE)へのポインタ
	CView* m_pPrintView;                // 印刷ビュー(Visible=FALSE)へのポインタ
	CView* m_pScaleView;                // 目盛りビューへのポインタ
	CView* m_pModeScaleView;            // 項目目盛りビューへのポインタ
	CView* m_pTimeScaleView;            // タイム目盛りビューへのポインタ
	CView* m_pTrackScaleView;           // トラック番号目盛りビューへのポインタ
	CView* m_pTrackModeView;            // トラック番号-項目ビュー(左ペイン)へのポインタ
	CView* m_pTrackTimeView;            // トラック番号-タイムビュー(右ペイン)へのポインタ
	CScrollBar m_wndColumnScroll;       // 列方向スクロールバー
	CScrollBar m_wndTimeScroll;         // 時間方向スクロールバー
	CScrollBar m_wndRowScroll;          // 行方向スクロールバー
	CScrollBar m_wndSizeScroll;         // サイズスクロールバー
	CBitmapButton m_wndColumnZoomUp;    // 列方向拡大ボタン
	CBitmapButton m_wndColumnZoomDown;  // 列方向縮小ボタン
	CBitmapButton m_wndTimeZoomUp;      // 時間方向拡大ボタン
	CBitmapButton m_wndTimeZoomDown;    // 時間方向縮小ボタン
	CBitmapButton m_wndRowZoomUp;       // 行方向拡大ボタン
	CBitmapButton m_wndRowZoomDown;     // 行方向縮小ボタン

public:
	CFont m_theFont;                    // トラックビューウィンドウで使うフォント
	long m_lCurTool;                    // 現在選択されているツール番号(0=選択,1=試聴)
	BOOL m_bAutoPageUpdate;             // 自動的にページを更新するか?

protected:
	CPoint m_ptMouseDown;               // マウスが押された座標(スプリッターを動かすのに使う)
	CPoint m_ptMouseMoveOld;            // マウスが動かされた前回の座標(スプリッターを動かすのに使う)


	//--------------------------------------------------------------------------
	// 構築と破壊
	//--------------------------------------------------------------------------
public:
	CTrackListFrame ();                 // コンストラクタ
	virtual ~CTrackListFrame();         // デストラクタ


	//--------------------------------------------------------------------------
	// オペレーション
	//--------------------------------------------------------------------------
public:
	CSekaijuDoc* GetDocument ();
	virtual long GetColumnBaseWidth (long lColumn);
	virtual long SetColumnBaseWidth (long lColumn, long lColumnBaseWidth);
	virtual CString GetColumnTitle (long lColumn);
	virtual long GetColumnContent (long lColumn);
	virtual long GetRowZoom ();
	virtual long GetColumnZoom ();
	virtual long GetTimeZoom ();
	virtual long GetColumnLeft (long lColumn);
	virtual long GetColumnWidth (long lColumn);
	virtual long XtoColumn (long x);
	virtual long ColumntoX (long lMode);
	virtual long XtoTime (long x);
	virtual long TimetoX (long lTime);
	virtual long YtoRow (long y);
	virtual long RowtoY (long lKey);
	virtual long GetVisibleTopRow ();
	virtual long GetVisibleBottomRow ();
	virtual long GetVisibleLeftTime ();
	virtual long GetVisibleRightTime ();
	virtual long GetTimeScrollPos ();
	virtual long GetRowScrollPos ();
	virtual long GetColumnScrollPos ();
	virtual long SetTimeScrollPos (long lTimeScrollPos);
	virtual long SetColumnScrollPos (long lModeScrollPos);
	virtual long SetRowScrollPos (long lTrackScrollPos);
	virtual void DrawSplitterCaptor (CDC* pDC, CPoint pt);
	virtual void RecalcRowScrollInfo ();
	virtual void RecalcColumnScrollInfo ();
	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 OnPaint( );
	afx_msg void OnMDIActivate (BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd);
	afx_msg void OnClose ();
	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 OnColumnZoomDown ();
	afx_msg void OnColumnZoomUp ();
	afx_msg void OnTimeZoomDown ();
	afx_msg void OnTimeZoomUp ();
	afx_msg void OnRowZoomDown ();
	afx_msg void OnRowZoomUp ();
	afx_msg void OnVScroll (UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg void OnHScroll (UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg void OnTrackListInsertTrack ();
	afx_msg void OnUpdateTrackListInsertTrackUI (CCmdUI* pCmdUI);
	afx_msg void OnTrackListDuplicateTrack ();
	afx_msg void OnUpdateTrackListDuplicateTrackUI (CCmdUI* pCmdUI);
	afx_msg void OnTrackListDeleteTrack ();
	afx_msg void OnUpdateTrackListDeleteTrackUI (CCmdUI* pCmdUI);
	afx_msg void OnTrackListMoveUpTrack ();
	afx_msg void OnUpdateTrackListMoveUpTrackUI (CCmdUI* pCmdUI);
	afx_msg void OnTrackListMoveDownTrack ();
	afx_msg void OnUpdateTrackListMoveDownTrackUI (CCmdUI* pCmdUI);
	afx_msg void OnTrackListSelect ();
	afx_msg void OnUpdateTrackListSelectUI (CCmdUI* pCmdUI);
	afx_msg void OnTrackListSpeaker ();
	afx_msg void OnUpdateTrackListSpeakerUI (CCmdUI* pCmdUI);
	afx_msg void OnTrackListAutoPageUpdate ();
	afx_msg void OnUpdateTrackListAutoPageUpdateUI (CCmdUI* pCmdUI);
	afx_msg void OnTrackListSaveAs ();
	afx_msg void OnUpdateTrackListSaveAsUI (CCmdUI* pCmdUI);


	DECLARE_MESSAGE_MAP()
};


#endif