Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_animation_frame_cache.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2015 Jouni Pentikäinen <joupent@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KIS_ANIMATION_FRAME_CACHE_H
8#define KIS_ANIMATION_FRAME_CACHE_H
9
10#include <QImage>
11#include <QObject>
12
13#include "kritaui_export.h"
14#include "kis_types.h"
15#include "kis_shared.h"
16
17class KisImage;
19class KisTimeSpan;
20class KisRegion;
21
24
27
28class KRITAUI_EXPORT KisAnimationFrameCache : public QObject, public KisShared
29{
30 Q_OBJECT
31
32public:
33
34 static KisAnimationFrameCacheSP getFrameCache(KisOpenGLImageTexturesSP textures);
35 static const QList<KisAnimationFrameCache*> caches();
36 static const KisAnimationFrameCacheSP cacheForImage(KisImageWSP image);
37
39 ~KisAnimationFrameCache() override;
40
41 QImage getFrame(int time);
42 bool uploadFrame(int time);
43
44 bool shouldUploadNewFrame(int newTime, int oldTime) const;
45
50
51 CacheStatus frameStatus(int time) const;
52 bool tryGlueSameFrames(const KisTimeSpan &range);
53
54
55 KisImageWSP image();
56
57 KisOpenGLUpdateInfoSP fetchFrameData(int time, KisImageSP image, const KisRegion &requestedRegion) const;
58 void addConvertedFrameData(KisOpenGLUpdateInfoSP info, int time);
59
64 void dropLowQualityFrames(const KisTimeSpan &range, const QRect &regionOfInterest, const QRect &minimalRect);
65
66 bool framesHaveValidRoi(const KisTimeSpan &range, const QRect &regionOfInterest);
67
68Q_SIGNALS:
69 void changed();
70
71private:
72
73 struct Private;
74 QScopedPointer<Private> m_d;
75
76private Q_SLOTS:
77 void framesChanged(const KisTimeSpan &range, const QRect &rect);
78 void slotConfigChanged();
79};
80
81#endif
QImage getFrame(int time)
QScopedPointer< Private > m_d
KisSharedPtr< KisOpenGLUpdateInfo > KisOpenGLUpdateInfoSP
KisSharedPtr< KisOpenGLImageTextures > KisOpenGLImageTexturesSP