60class Piano :
public wxEvtHandler {
65 void Paint(
int y, wxDC &dc, wxDC *shapeDC = NULL);
66 void Paint(
int y,
ocpnDC &dc, wxDC *shapeDC = NULL);
68 void FormatKeys(
void);
69 bool MouseEvent(wxMouseEvent &event);
70 void SetColorScheme(ColorScheme cs);
71 void SetKeyArray(std::vector<int> ¢er_array,
72 std::vector<int> &full_array);
73 void SetActiveKey(
int iactive) { m_iactive = iactive; }
74 void SetActiveKeyArray(std::vector<int> array);
75 void SetNoshowIndexArray(std::vector<int> array);
76 void AddNoshowIndexArray(std::vector<int> array);
77 void SetEclipsedIndexArray(std::vector<int> array);
78 void SetSkewIndexArray(std::vector<int> array);
79 void SetTmercIndexArray(std::vector<int> array);
80 void SetPolyIndexArray(std::vector<int> array);
81 int GetPianoMode() {
return m_piano_mode; }
83 std::vector<int> GetActiveKeyArray() {
return m_active_index_array; }
85 void SetVizIcon(wxBitmap *picon_bmp) {
86 if (m_pVizIconBmp)
delete m_pVizIconBmp;
87 m_pVizIconBmp = picon_bmp;
89 void SetInVizIcon(wxBitmap *picon_bmp) {
90 if (m_pInVizIconBmp)
delete m_pInVizIconBmp;
91 m_pInVizIconBmp = picon_bmp;
93 void SetSkewIcon(wxBitmap *picon_bmp) {
94 if (m_pSkewIconBmp)
delete m_pSkewIconBmp;
95 m_pSkewIconBmp = picon_bmp;
97 void SetTMercIcon(wxBitmap *picon_bmp) {
98 if (m_pTmercIconBmp)
delete m_pTmercIconBmp;
99 m_pTmercIconBmp = picon_bmp;
101 void SetPolyIcon(wxBitmap *picon_bmp) {
102 if (m_pPolyIconBmp)
delete m_pPolyIconBmp;
103 m_pPolyIconBmp = picon_bmp;
105 void ShowBusy(
bool busy);
106 void onTimerEvent(wxTimerEvent &event);
108 wxPoint GetKeyOrigin(
int key_index);
109 void ResetRollover(
void);
110 void SetRoundedRectangles(
bool val) {
118 wxString &GenerateAndStoreNewHash();
119 wxString &GetStoredHash();
121 int GetnKeys() {
return m_nRegions; }
124 void SetPianoMode(
int new_mode) { m_piano_mode = new_mode; }
126 void DrawGLSL(
int y);
127 void BuildGLTexture();
128 bool InArray(std::vector<int> &array,
int key);
132 wxString GetStateHash();
138 std::vector<PianoKeyElement> m_composite_array;
142 int m_hover_icon_last;
147 wxBrush m_srBrush, m_rBrush;
148 wxBrush m_svBrush, m_vBrush;
149 wxBrush m_unavailableBrush;
150 wxBrush m_utileBrush, m_tileBrush;
155 std::vector<int> m_key_array;
156 std::vector<int> m_noshow_index_array;
157 std::vector<int> m_active_index_array;
158 std::vector<int> m_eclipsed_index_array;
159 std::vector<int> m_skew_index_array;
160 std::vector<int> m_tmerc_index_array;
161 std::vector<int> m_poly_index_array;
163 wxTimer m_eventTimer;
164 int m_click_sel_index;
167 std::vector<wxRect> KeyRect;
169 wxBitmap *m_pVizIconBmp;
170 wxBitmap *m_pInVizIconBmp;
171 wxBitmap *m_pTmercIconBmp;
172 wxBitmap *m_pSkewIconBmp;
173 wxBitmap *m_pPolyIconBmp;
179 unsigned int m_tex, m_texw, m_texh, m_tex_piano_height;
180 int m_ref, m_pad, m_radius, m_texPitch;
185 DECLARE_EVENT_TABLE()