59class Piano :
public wxEvtHandler {
64 void Paint(
int y, wxDC &dc, wxDC *shapeDC = NULL);
65 void Paint(
int y,
ocpnDC &dc, wxDC *shapeDC = NULL);
67 void FormatKeys(
void);
68 bool MouseEvent(wxMouseEvent &event);
69 void SetColorScheme(ColorScheme cs);
70 void SetKeyArray(std::vector<int> ¢er_array,
71 std::vector<int> &full_array);
72 void SetActiveKey(
int iactive) { m_iactive = iactive; }
73 void SetActiveKeyArray(std::vector<int> array);
74 void SetNoshowIndexArray(std::vector<int> array);
75 void AddNoshowIndexArray(std::vector<int> array);
76 void SetEclipsedIndexArray(std::vector<int> array);
77 void SetSkewIndexArray(std::vector<int> array);
78 void SetTmercIndexArray(std::vector<int> array);
79 void SetPolyIndexArray(std::vector<int> array);
80 int GetPianoMode() {
return m_piano_mode; }
82 std::vector<int> GetActiveKeyArray() {
return m_active_index_array; }
84 void SetVizIcon(wxBitmap *picon_bmp) {
85 if (m_pVizIconBmp)
delete m_pVizIconBmp;
86 m_pVizIconBmp = picon_bmp;
88 void SetInVizIcon(wxBitmap *picon_bmp) {
89 if (m_pInVizIconBmp)
delete m_pInVizIconBmp;
90 m_pInVizIconBmp = picon_bmp;
92 void SetSkewIcon(wxBitmap *picon_bmp) {
93 if (m_pSkewIconBmp)
delete m_pSkewIconBmp;
94 m_pSkewIconBmp = picon_bmp;
96 void SetTMercIcon(wxBitmap *picon_bmp) {
97 if (m_pTmercIconBmp)
delete m_pTmercIconBmp;
98 m_pTmercIconBmp = picon_bmp;
100 void SetPolyIcon(wxBitmap *picon_bmp) {
101 if (m_pPolyIconBmp)
delete m_pPolyIconBmp;
102 m_pPolyIconBmp = picon_bmp;
104 void ShowBusy(
bool busy);
105 void onTimerEvent(wxTimerEvent &event);
107 wxPoint GetKeyOrigin(
int key_index);
108 void ResetRollover(
void);
109 void SetRoundedRectangles(
bool val) {
117 wxString &GenerateAndStoreNewHash();
118 wxString &GetStoredHash();
120 int GetnKeys() {
return m_nRegions; }
123 void SetPianoMode(
int new_mode) { m_piano_mode = new_mode; }
125 void DrawGLSL(
int y);
126 void BuildGLTexture();
127 bool InArray(std::vector<int> &array,
int key);
131 wxString GetStateHash();
137 std::vector<PianoKeyElement> m_composite_array;
141 int m_hover_icon_last;
146 wxBrush m_srBrush, m_rBrush;
147 wxBrush m_svBrush, m_vBrush;
148 wxBrush m_unavailableBrush;
149 wxBrush m_utileBrush, m_tileBrush;
154 std::vector<int> m_key_array;
155 std::vector<int> m_noshow_index_array;
156 std::vector<int> m_active_index_array;
157 std::vector<int> m_eclipsed_index_array;
158 std::vector<int> m_skew_index_array;
159 std::vector<int> m_tmerc_index_array;
160 std::vector<int> m_poly_index_array;
162 wxTimer m_eventTimer;
163 int m_click_sel_index;
166 std::vector<wxRect> KeyRect;
168 wxBitmap *m_pVizIconBmp;
169 wxBitmap *m_pInVizIconBmp;
170 wxBitmap *m_pTmercIconBmp;
171 wxBitmap *m_pSkewIconBmp;
172 wxBitmap *m_pPolyIconBmp;
178 unsigned int m_tex, m_texw, m_texh, m_tex_piano_height;
179 int m_ref, m_pad, m_radius, m_texPitch;
184 DECLARE_EVENT_TABLE()