1 /*
2  *  Copyright (c) 2015 Jouni Pentikäinen <joupent@gmail.com>
3  *
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 2 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License
15  *  along with this program; if not, write to the Free Software
16  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  */
18 
19 #ifndef KIS_ANIMATION_CACHE_POPULATOR_H
20 #define KIS_ANIMATION_CACHE_POPULATOR_H
21 
22 #include <QObject>
23 #include "kis_types.h"
24 
25 class KisPart;
26 
27 class KisAnimationCachePopulator : public QObject
28 {
29     Q_OBJECT
30 
31 public:
32     KisAnimationCachePopulator(KisPart *part);
33     ~KisAnimationCachePopulator() override;
34 
35     /**
36      * Request generation of given frame. The request will
37      * be ignored if the populator is already requesting a frame.
38      * @return true if generation requested, false if busy
39      */
40     bool regenerate(KisAnimationFrameCacheSP cache, int frame);
41     void requestRegenerationWithPriorityFrame(KisImageSP image, int frameIndex);
42 
43 public Q_SLOTS:
44     void slotRequestRegeneration();
45 
46 private Q_SLOTS:
47     void slotTimer();
48 
49     void slotRegeneratorFrameCancelled();
50     void slotRegeneratorFrameReady();
51 
52     void slotConfigChanged();
53 
54 private:
55     struct Private;
56     QScopedPointer<Private> m_d;
57 };
58 
59 #endif
60