65class Piano :
public wxEvtHandler {
70 void Paint(
int y, wxDC &dc, wxDC *shapeDC = NULL);
71 void Paint(
int y,
ocpnDC &dc, wxDC *shapeDC = NULL);
73 void FormatKeys(
void);
74 bool MouseEvent(wxMouseEvent &event);
75 void SetColorScheme(ColorScheme cs);
76 void SetKeyArray(std::vector<int> ¢er_array,
77 std::vector<int> &full_array);
78 void SetActiveKey(
int iactive) { m_iactive = iactive; }
79 void SetActiveKeyArray(std::vector<int> array);
80 void SetNoshowIndexArray(std::vector<int> array);
81 void AddNoshowIndexArray(std::vector<int> array);
82 void SetEclipsedIndexArray(std::vector<int> array);
83 void SetSkewIndexArray(std::vector<int> array);
84 void SetTmercIndexArray(std::vector<int> array);
85 void SetPolyIndexArray(std::vector<int> array);
86 int GetPianoMode() {
return m_piano_mode; }
88 std::vector<int> GetActiveKeyArray() {
return m_active_index_array; }
90 void SetVizIcon(wxBitmap *picon_bmp) {
91 if (m_pVizIconBmp)
delete m_pVizIconBmp;
92 m_pVizIconBmp = picon_bmp;
94 void SetInVizIcon(wxBitmap *picon_bmp) {
95 if (m_pInVizIconBmp)
delete m_pInVizIconBmp;
96 m_pInVizIconBmp = picon_bmp;
98 void SetSkewIcon(wxBitmap *picon_bmp) {
99 if (m_pSkewIconBmp)
delete m_pSkewIconBmp;
100 m_pSkewIconBmp = picon_bmp;
102 void SetTMercIcon(wxBitmap *picon_bmp) {
103 if (m_pTmercIconBmp)
delete m_pTmercIconBmp;
104 m_pTmercIconBmp = picon_bmp;
106 void SetPolyIcon(wxBitmap *picon_bmp) {
107 if (m_pPolyIconBmp)
delete m_pPolyIconBmp;
108 m_pPolyIconBmp = picon_bmp;
110 void ShowBusy(
bool busy);
111 void onTimerEvent(wxTimerEvent &event);
113 wxPoint GetKeyOrigin(
int key_index);
114 void ResetRollover(
void);
115 void SetRoundedRectangles(
bool val) {
123 wxString &GenerateAndStoreNewHash();
124 wxString &GetStoredHash();
126 int GetnKeys() {
return m_nRegions; }
129 void SetPianoMode(
int new_mode) { m_piano_mode = new_mode; }
131 void DrawGLSL(
int y);
132 void BuildGLTexture();
133 bool InArray(std::vector<int> &array,
int key);
137 wxString GetStateHash();
143 std::vector<PianoKeyElement> m_composite_array;
147 int m_hover_icon_last;
152 wxBrush m_srBrush, m_rBrush;
153 wxBrush m_svBrush, m_vBrush;
154 wxBrush m_unavailableBrush;
155 wxBrush m_utileBrush, m_tileBrush;
160 std::vector<int> m_key_array;
161 std::vector<int> m_noshow_index_array;
162 std::vector<int> m_active_index_array;
163 std::vector<int> m_eclipsed_index_array;
164 std::vector<int> m_skew_index_array;
165 std::vector<int> m_tmerc_index_array;
166 std::vector<int> m_poly_index_array;
168 wxTimer m_eventTimer;
169 int m_click_sel_index;
172 std::vector<wxRect> KeyRect;
174 wxBitmap *m_pVizIconBmp;
175 wxBitmap *m_pInVizIconBmp;
176 wxBitmap *m_pTmercIconBmp;
177 wxBitmap *m_pSkewIconBmp;
178 wxBitmap *m_pPolyIconBmp;
184 unsigned int m_tex, m_texw, m_texh, m_tex_piano_height;
185 int m_ref, m_pad, m_radius, m_texPitch;
190 DECLARE_EVENT_TABLE()