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

0001 /*
0002  *  SPDX-FileCopyrightText: 2018 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #include "KisFrameCacheSwapper.h"
0007 
0008 #include "KisFrameCacheStore.h"
0009 
0010 #include "kis_update_info.h"
0011 #include "opengl/KisOpenGLUpdateInfoBuilder.h"
0012 
0013 struct KisFrameCacheSwapper::Private
0014 {
0015     Private(const KisOpenGLUpdateInfoBuilder &_builder, const QString &frameCachePath)
0016         : frameStore(frameCachePath),
0017           builder(_builder)
0018     {
0019     }
0020 
0021     KisFrameCacheStore frameStore;
0022     const KisOpenGLUpdateInfoBuilder &builder;
0023 };
0024 
0025 KisFrameCacheSwapper::KisFrameCacheSwapper(const KisOpenGLUpdateInfoBuilder &builder)
0026     : KisFrameCacheSwapper(builder, "")
0027 {
0028 }
0029 
0030 KisFrameCacheSwapper::KisFrameCacheSwapper(const KisOpenGLUpdateInfoBuilder &builder, const QString &frameCachePath)
0031     : m_d(new Private(builder, frameCachePath))
0032 {
0033 }
0034 
0035 KisFrameCacheSwapper::~KisFrameCacheSwapper()
0036 {
0037 }
0038 
0039 void KisFrameCacheSwapper::saveFrame(int frameId, KisOpenGLUpdateInfoSP info, const QRect &imageBounds)
0040 {
0041     m_d->frameStore.saveFrame(frameId, info, imageBounds);
0042 }
0043 
0044 KisOpenGLUpdateInfoSP KisFrameCacheSwapper::loadFrame(int frameId)
0045 {
0046     return m_d->frameStore.loadFrame(frameId, m_d->builder);
0047 }
0048 
0049 void KisFrameCacheSwapper::moveFrame(int srcFrameId, int dstFrameId)
0050 {
0051     m_d->frameStore.moveFrame(srcFrameId, dstFrameId);
0052 }
0053 
0054 void KisFrameCacheSwapper::forgetFrame(int frameId)
0055 {
0056     m_d->frameStore.forgetFrame(frameId);
0057 }
0058 
0059 bool KisFrameCacheSwapper::hasFrame(int frameId) const
0060 {
0061     return m_d->frameStore.hasFrame(frameId);
0062 }
0063 
0064 int KisFrameCacheSwapper::frameLevelOfDetail(int frameId) const
0065 {
0066     return m_d->frameStore.frameLevelOfDetail(frameId);
0067 }
0068 
0069 QRect KisFrameCacheSwapper::frameDirtyRect(int frameId) const
0070 {
0071     return m_d->frameStore.frameDirtyRect(frameId);
0072 }