File indexing completed on 2024-05-05 04:02:27
0001 /****************************************************************************** 0002 * KBlocks, a falling blocks game by KDE * 0003 * SPDX-FileCopyrightText: 2009-2021 Mauricio Piacentini <mauricio@tabuleiro.com> * 0004 * Zhongjie Cai <squall.leonhart.cai@gmail.com> * 0005 * Julian Helfferich <julian.helfferich@mailbox.org> * 0006 * * 0007 * SPDX-License-Identifier: GPL-2.0-or-later 0008 ******************************************************************************/ 0009 #include "KBlocksAnimator.h" 0010 0011 #include "SvgItemInterface.h" 0012 0013 KBlocksAnimator::KBlocksAnimator() 0014 { 0015 } 0016 0017 KBlocksAnimator::~KBlocksAnimator() 0018 { 0019 if (mpAnimDrop) { 0020 delete mpAnimDrop; 0021 mpAnimDrop = nullptr; 0022 } 0023 if (mpAnimFade) { 0024 delete mpAnimFade; 0025 mpAnimFade = nullptr; 0026 } 0027 } 0028 0029 bool KBlocksAnimator::createFadeAnim(const QList<SvgItemInterface *> &items, int duration, QTimeLine::Direction direction) 0030 { 0031 if (mpAnimFade) { 0032 return false; 0033 } 0034 0035 mpAnimFade = new KBlocksAnimFade(items, duration, direction); 0036 0037 if (direction == QTimeLine::Forward) { 0038 connect(mpAnimFade, &KBlocksAnimFade::animationFinished, this, &KBlocksAnimator::endFadeInAnim); 0039 } else { 0040 connect(mpAnimFade, &KBlocksAnimFade::animationFinished, this, &KBlocksAnimator::endFadeOutAnim); 0041 } 0042 0043 return true; 0044 } 0045 0046 bool KBlocksAnimator::deleteFadeAnim() 0047 { 0048 if (mpAnimFade) { 0049 delete mpAnimFade; 0050 mpAnimFade = nullptr; 0051 return true; 0052 } 0053 return false; 0054 } 0055 0056 KBlocksAnimFade *KBlocksAnimator::getFadeAnim() 0057 { 0058 return mpAnimFade; 0059 } 0060 0061 bool KBlocksAnimator::createDropAnim(const QList<SvgItemInterface *> &items, int duration, QTimeLine::Direction direction) 0062 { 0063 if (mpAnimDrop) { 0064 return false; 0065 } 0066 0067 mpAnimDrop = new KBlocksAnimDrop(items, duration, direction); 0068 0069 connect(mpAnimDrop, &KBlocksAnimDrop::animationFinished, this, &KBlocksAnimator::endDropAnim); 0070 0071 return true; 0072 } 0073 0074 bool KBlocksAnimator::deleteDropAnim() 0075 { 0076 if (mpAnimDrop) { 0077 delete mpAnimDrop; 0078 mpAnimDrop = nullptr; 0079 return true; 0080 } 0081 return false; 0082 } 0083 0084 KBlocksAnimDrop *KBlocksAnimator::getDropAnim() 0085 { 0086 return mpAnimDrop; 0087 } 0088 0089 void KBlocksAnimator::endFadeInAnim() 0090 { 0091 Q_EMIT animFinished(KBlocks_Animation_Fade_In); 0092 } 0093 0094 void KBlocksAnimator::endFadeOutAnim() 0095 { 0096 Q_EMIT animFinished(KBlocks_Animation_Fade_Out); 0097 } 0098 0099 void KBlocksAnimator::endDropAnim() 0100 { 0101 Q_EMIT animFinished(KBlocks_Animation_Drop); 0102 } 0103 0104 #include "moc_KBlocksAnimator.cpp"