Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_offset_on_exit_verifier.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_OFFSET_ON_EXIT_VERIFIER_H
8#define __KIS_OFFSET_ON_EXIT_VERIFIER_H
9
10#include "kritapsdutils_export.h"
11
12#include <QIODevice>
13#include <QString>
14#include <kis_debug.h>
15
16//#define DEBUG_OFFSET_ON_EXIT
17
24class KRITAPSDUTILS_EXPORT KisOffsetOnExitVerifier
25{
26public:
27 KisOffsetOnExitVerifier(QIODevice &device, qint64 expectedOffset, int maxPadding, const QString &objectName = "", const QString &domain = "")
28 : m_device(device)
29 , m_maxPadding(maxPadding)
30 , m_domain(domain)
31 , m_objectName(objectName)
32 {
33 m_expectedPos = m_device.pos() + expectedOffset;
34 }
35
37 {
38 if (m_device.pos() < m_expectedPos - m_maxPadding || m_device.pos() > m_expectedPos) {
39#ifdef DEBUG_OFFSET_ON_EXIT
40
41 QString msg = QString("Incorrect offset on exit %1, expected %2!").arg(m_device.pos()).arg(m_expectedPos);
42
43 warnKrita << "*** |" << m_objectName << msg;
44 warnKrita << " |" << m_domain;
45
46#endif /* DEBUG_OFFSET_ON_EXIT */
47
48 m_device.seek(m_expectedPos);
49 }
50 }
51
52private:
53 QIODevice &m_device;
56 QString m_domain;
57 QString m_objectName;
58};
59
60#define SETUP_OFFSET_VERIFIER(name, device, expectedOffset, maxPadding) \
61 KisOffsetOnExitVerifier name(device, expectedOffset, maxPadding, QString(#name), QString(__FILE__) + ":" + QString::number(__LINE__))
62
63#endif /* __KIS_OFFSET_ON_EXIT_VERIFIER_H */
KisOffsetOnExitVerifier(QIODevice &device, qint64 expectedOffset, int maxPadding, const QString &objectName="", const QString &domain="")
#define warnKrita
Definition kis_debug.h:87