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 }