File indexing completed on 2024-05-12 16:01:43

0001 /*
0002  *  SPDX-FileCopyrightText: 2018 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #ifndef KISABSTRACTFRAMECACHESWAPPER_H
0007 #define KISABSTRACTFRAMECACHESWAPPER_H
0008 
0009 #include "kritaui_export.h"
0010 
0011 class QRect;
0012 
0013 template<class T>
0014 class KisSharedPtr;
0015 
0016 class KisOpenGLUpdateInfo;
0017 typedef KisSharedPtr<KisOpenGLUpdateInfo> KisOpenGLUpdateInfoSP;
0018 
0019 
0020 class KRITAUI_EXPORT KisAbstractFrameCacheSwapper
0021 {
0022 public:
0023     virtual ~KisAbstractFrameCacheSwapper();
0024 
0025     // WARNING: after transferring \p info to saveFrame() the object becomes invalid
0026     virtual void saveFrame(int frameId, KisOpenGLUpdateInfoSP info, const QRect &imageBounds) = 0;
0027     virtual KisOpenGLUpdateInfoSP loadFrame(int frameId) = 0;
0028 
0029     virtual void moveFrame(int srcFrameId, int dstFrameId) = 0;
0030     virtual void forgetFrame(int frameId) = 0;
0031 
0032     virtual bool hasFrame(int frameId) const = 0;
0033 
0034     virtual int frameLevelOfDetail(int frameId) const = 0;
0035     virtual QRect frameDirtyRect(int frameId) const = 0;
0036 };
0037 
0038 #endif // KISABSTRACTFRAMECACHESWAPPER_H