Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_qimage_pyramid.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2013 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_QIMAGE_PYRAMID_H
8#define __KIS_QIMAGE_PYRAMID_H
9
10#include <QImage>
11#include <QVector>
12#include <kis_dab_shape.h>
13#include <kritabrush_export.h>
14
15
16class BRUSH_EXPORT KisQImagePyramid
17{
18public:
19 KisQImagePyramid() = default;
20 KisQImagePyramid(const QImage &baseImage, bool useSmoothingForEnlarging = true);
22
23 static QSize imageSize(const QSize &originalSize,
24 KisDabShape const&,
25 qreal subPixelX, qreal subPixelY);
26
27 static QSizeF characteristicSize(const QSize &originalSize, KisDabShape const&);
28
29 QImage createImage(KisDabShape const&,
30 qreal subPixelX, qreal subPixelY) const;
31
32 QImage getClosest(QTransform transform, qreal *scale) const;
33
34 QImage getClosestWithoutWorkaroundBorder(QTransform transform, qreal *scale) const;
35
36private:
37 friend class KisGbrBrushTest;
38 int findNearestLevel(qreal scale, qreal *baseScale) const;
39 void appendPyramidLevel(const QImage &image);
40
41 static void calculateParams(KisDabShape const& shape,
42 qreal subPixelX, qreal subPixelY,
43 const QSize &originalSize,
44 QTransform *outputTransform, QSize *outputSize);
45
46 static void calculateParams(KisDabShape shape,
47 qreal subPixelX, qreal subPixelY,
48 const QSize &originalSize,
49 qreal baseScale, const QSize &baseSize,
50 QTransform *outputTransform, QSize *outputSize);
51
52private:
54 qreal m_baseScale {0.0};
55
56 struct PyramidLevel {
58 PyramidLevel(QImage _image, QSize _size) : image(_image), size(_size) {}
59
60 QImage image;
61 QSize size;
62 };
63
65};
66
67#endif /* __KIS_QIMAGE_PYRAMID_H */
KisQImagePyramid()=default
QVector< PyramidLevel > m_levels
PyramidLevel(QImage _image, QSize _size)