drumstick  2.9.0
C++ MIDI libraries using Qt objects, idioms, and style.
pianokey.h
Go to the documentation of this file.
1 /*
2  Virtual Piano Widget for Qt
3  Copyright (C) 2008-2023, Pedro Lopez-Cabanillas <plcl@users.sf.net>
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License along
16  with this program; If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #ifndef PIANOKEY_H_
20 #define PIANOKEY_H_
21 
22 #include <QGraphicsRectItem>
23 #include <QBrush>
24 
30 namespace drumstick { namespace widgets {
31 
32  class PianoPalette;
33 
34  class PianoKey : public QGraphicsRectItem
35  {
36  public:
37  explicit PianoKey(QGraphicsItem * parent = nullptr ): QGraphicsRectItem(parent),
38  m_pressed(false),
39  m_note(0),
40  m_black(false),
41  m_usePixmap(true)
42  { }
43  PianoKey(const QRectF &rect, const bool black, const int note);
44  void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override;
45  int getNote() const { return m_note; }
46  void setBrush(const QBrush& b) { m_brush = b; }
47  void setPressedBrush(const QBrush& b) { m_selectedBrush = b; }
48  void resetBrush();
49  bool isPressed() const { return m_pressed; }
50  void setPressed(bool p);
51  int getDegree() const { return m_note % 12; }
52  int getType() const { return (m_black ? 1 : 0); }
53  bool isBlack() const { return m_black; }
54  const QPixmap& getPixmap() const;
55  void setPixmap(const QPixmap& p);
56  QRectF pixmapRect() const;
57  bool getUsePixmap() const;
58  void setUsePixmap(bool usePixmap);
59  void paintPixmap(QPixmap &pixmap, const QColor& color) const;
60 
61  static const PianoPalette keyPalette;
62 
63  private:
64  bool m_pressed;
65  QBrush m_selectedBrush;
66  QBrush m_brush;
67  int m_note;
68  bool m_black;
69  QPixmap m_pixmap;
70  bool m_usePixmap;
71  };
72 
73 }} // namespace drumstick::widgets
74 
75 #endif /*PIANOKEY_H_*/
Drumstick common.
Definition: alsaclient.cpp:68