File indexing completed on 2024-05-19 04:29:14

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