1 /*************************************************************************** 2 ** ** 3 ** Polyphone, a soundfont editor ** 4 ** Copyright (C) 2013-2020 Davy Triponney ** 5 ** ** 6 ** This program is free software: you can redistribute it and/or modify ** 7 ** it under the terms of the GNU General Public License as published by ** 8 ** the Free Software Foundation, either version 3 of the License, or ** 9 ** (at your option) any later version. ** 10 ** ** 11 ** This program is distributed in the hope that it will be useful, ** 12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** 13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** 14 ** GNU General Public License for more details. ** 15 ** ** 16 ** You should have received a copy of the GNU General Public License ** 17 ** along with this program. If not, see http://www.gnu.org/licenses/. ** 18 ** ** 19 **************************************************************************** 20 ** Author: Davy Triponney ** 21 ** Website/Contact: https://www.polyphone-soundfonts.com ** 22 ** Date: 01.01.2013 ** 23 ***************************************************************************/ 24 25 #ifndef GRAPHICSLEGENDITEM_H 26 #define GRAPHICSLEGENDITEM_H 27 28 #include <QGraphicsItem> 29 #include <QBrush> 30 #include <QFont> 31 #include <QPen> 32 #include "basetypes.h" 33 34 class GraphicsLegendItem : public QGraphicsItem 35 { 36 public: 37 GraphicsLegendItem(QString fontFamily, QGraphicsItem *parent = nullptr); 38 39 void setIds(QList<EltID> ids, QList<int> highlightedIds, int selectionIndex, int selectionNumber); 40 void setLeft(bool isLeft); 41 bool isLeft(); 42 43 QRectF boundingRect() const; 44 void paint(QPainter *painter, const QStyleOptionGraphicsItem * option, QWidget * widget = nullptr); 45 46 private: 47 static const int s_border; 48 static const QString s_rightArrow; 49 QBrush _foregroundBrush; 50 QPen _borderPen; 51 QPen _textPen; 52 53 const QFont _font; 54 const QFont _smallFont; 55 QStringList _textTop; 56 QList<int> _selectedLinesInTextTop; 57 QStringList _textBottom; 58 int _selectionIndex; 59 int _selectionNumber; 60 int _alignment; 61 62 QSizeF getTextSize() const; 63 qreal dx(QSizeF size) const; 64 qreal dy(QSizeF size) const; 65 }; 66 67 #endif // GRAPHICSLEGENDITEM_H 68