Krita Source Code Documentation
Loading...
Searching...
No Matches
KisInMemoryFrameCacheSwapper.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2018 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
8#include <QMap>
9#include <kis_update_info.h>
10
11
12struct KRITAUI_NO_EXPORT KisInMemoryFrameCacheSwapper::Private
13{
14 QMap<int, KisOpenGLUpdateInfoSP> framesMap;
15};
16
21
25
26void KisInMemoryFrameCacheSwapper::saveFrame(int frameId, KisOpenGLUpdateInfoSP info, const QRect &imageBounds)
27{
28 Q_UNUSED(imageBounds);
29 KIS_SAFE_ASSERT_RECOVER_NOOP(!m_d->framesMap.contains(frameId));
30
31 m_d->framesMap.insert(frameId, info);
32}
33
35{
36 KIS_SAFE_ASSERT_RECOVER_NOOP(m_d->framesMap.contains(frameId));
37 return m_d->framesMap.value(frameId, KisOpenGLUpdateInfoSP());
38}
39
40void KisInMemoryFrameCacheSwapper::moveFrame(int srcFrameId, int dstFrameId)
41{
42 KIS_SAFE_ASSERT_RECOVER_RETURN(m_d->framesMap.contains(srcFrameId));
43 KIS_SAFE_ASSERT_RECOVER_NOOP(!m_d->framesMap.contains(dstFrameId));
44
45 m_d->framesMap[dstFrameId] = m_d->framesMap[srcFrameId];
46 m_d->framesMap.remove(srcFrameId);
47}
48
50{
51 KIS_SAFE_ASSERT_RECOVER_RETURN(m_d->framesMap.contains(frameId));
52 m_d->framesMap.remove(frameId);
53}
54
56{
57 return m_d->framesMap.contains(frameId);
58}
59
61{
62 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(m_d->framesMap.contains(frameId), 0);
63 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(!m_d->framesMap[frameId].isNull(), 0);
64 return m_d->framesMap[frameId]->levelOfDetail();
65}
66
68{
69 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(m_d->framesMap.contains(frameId), QRect());
70 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(!m_d->framesMap[frameId].isNull(), QRect());
71 return m_d->framesMap[frameId]->dirtyImageRect();
72}
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130
KisSharedPtr< KisOpenGLUpdateInfo > KisOpenGLUpdateInfoSP
void saveFrame(int frameId, KisOpenGLUpdateInfoSP info, const QRect &imageBounds) override
QMap< int, KisOpenGLUpdateInfoSP > framesMap
KisOpenGLUpdateInfoSP loadFrame(int frameId) override
void moveFrame(int srcFrameId, int dstFrameId) override
const QScopedPointer< Private > m_d
int frameLevelOfDetail(int frameId) const override
bool hasFrame(int frameId) const override
QRect frameDirtyRect(int frameId) const override