File indexing completed on 2024-04-14 03:59:48
0001 /* 0002 This file is part of the KDE project "KLines" 0003 0004 SPDX-FileCopyrightText: 2006 Dmitry Suzdalev <dimsuz@gmail.com> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #include "ballitem.h" 0010 #include "renderer.h" 0011 0012 #include <QGraphicsScene> 0013 0014 BallItem::BallItem( QGraphicsScene* parent ) 0015 : KGameRenderedItem(KLinesRenderer::renderer() , QString(), nullptr) 0016 { 0017 parent->addItem(this); 0018 setShapeMode( BoundingRectShape ); 0019 0020 m_color = NumColors; // = uninitialized 0021 0022 m_timeLine.setEasingCurve(QEasingCurve::Linear); 0023 m_timeLine.setLoopCount(0); 0024 0025 connect(&m_timeLine, &QTimeLine::frameChanged, this, &BallItem::animFrameChanged); 0026 } 0027 0028 void BallItem::setColor( BallColor c, bool setPix ) 0029 { 0030 m_color = c; 0031 if(setPix) 0032 setSpriteKey(KLinesRenderer::ballPixmapId(m_color)); 0033 } 0034 0035 void BallItem::startSelectedAnimation() 0036 { 0037 if(m_timeLine.state() == QTimeLine::Running) 0038 return; 0039 // it needs to be here rather than in constructor, 0040 // because if different theme would get selected 0041 // new settings will be picked up from KLinesRenderer 0042 m_timeLine.setDuration(KLinesRenderer::animDuration(KLinesRenderer::SelectedAnim)); 0043 m_timeLine.setFrameRange(0, KLinesRenderer::frameCount(KLinesRenderer::SelectedAnim)-1); 0044 m_timeLine.start(); 0045 } 0046 0047 void BallItem::stopAnimation() 0048 { 0049 m_timeLine.stop(); 0050 setSpriteKey(KLinesRenderer::ballPixmapId(m_color)); 0051 } 0052 0053 0054 0055 void BallItem::animFrameChanged(int frame) 0056 { 0057 setSpriteKey(KLinesRenderer::animationFrameId(KLinesRenderer::SelectedAnim, m_color, frame )); 0058 } 0059 0060 #include "moc_ballitem.cpp"