1 /******************************************************************* 2 * 3 * This file is part of the KDE project "Bovo" 4 * 5 * Bovo 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 2, or (at your option) 8 * any later version. 9 * 10 * Bovo 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 16 * along with Bovo; see the file COPYING. If not, write to 17 * the Free Software Foundation, 51 Franklin Street, Fifth Floor, 18 * Boston, MA 02110-1301, USA. 19 * 20 ********************************************************************/ 21 22 #ifndef BOVO_MARK_H 23 #define BOVO_MARK_H 24 25 #include <QGraphicsSvgItem> 26 27 #include "common.h" 28 29 namespace bovo { 30 class Move; 31 } 32 33 using namespace bovo; 34 35 class QTimer; 36 37 namespace gui { 38 39 class Scene; 40 41 class Mark : public QGraphicsSvgItem { 42 Q_OBJECT 43 public: 44 Mark(Scene *scene, const Move& move, bool animate = true, qreal fill = 0.75); 45 ~Mark() override; 46 void killAnimation(); 47 void kill(); 48 usi row() const; 49 usi col() const; 50 void setFill(qreal fill); 51 QRectF boundingRect() const Q_DECL_OVERRIDE; 52 53 public slots: 54 void tick(); 55 void killTick(); 56 57 signals: 58 void killed(Mark* thisMark); 59 60 protected: 61 void paint(QPainter* painter, const QStyleOptionGraphicsItem*, 62 QWidget* widget=0) Q_DECL_OVERRIDE; 63 64 private: 65 Scene* m_scene; 66 int m_row; 67 int m_col; 68 qreal m_sizeShrink, m_fill; 69 int m_tick; 70 bool m_animate; 71 qreal m_opacity; 72 QTimer *m_ticker; 73 }; 74 75 } /* namespace gui */ 76 77 #endif // BOVO_MARH_H 78