#include <kis_lod_transform_base.h>
Definition at line 17 of file kis_lod_transform_base.h.
◆ KisLodTransformBase()
| KisLodTransformBase::KisLodTransformBase |
( |
int | levelOfDetail | ) |
|
|
inline |
◆ alignByPow2ButOneHi()
| static void KisLodTransformBase::alignByPow2ButOneHi |
( |
qint32 & | value, |
|
|
qint32 | alignment ) |
|
inlinestaticprivate |
Aligns @value to the lowest integer not smaller than @value and that is, increased by one, a divident of alignment
Definition at line 146 of file kis_lod_transform_base.h.
147 {
148 qint32 mask = alignment - 1;
150 }
float value(const T *src, size_t ch)
References value().
◆ alignByPow2Lo()
| static void KisLodTransformBase::alignByPow2Lo |
( |
qint32 & | value, |
|
|
qint32 | alignment ) |
|
inlinestaticprivate |
Aligns @value to the highest integer not exceeding @value and that is a divident of @alignment
Definition at line 156 of file kis_lod_transform_base.h.
157 {
158 qint32 mask = alignment - 1;
160 }
References value().
◆ alignedRect()
| static QRect KisLodTransformBase::alignedRect |
( |
const QRect & | srcRect, |
|
|
int | lod ) |
|
inlinestatic |
Here is a workaround of Qt's QRect::right()/bottom() "historical reasons". It should be one pixel smaller than actual right/bottom position
Definition at line 67 of file kis_lod_transform_base.h.
68 {
69 qint32 alignment = 1 << lod;
70
71 qint32 x1, y1, x2, y2;
72 srcRect.getCoords(&x1, &y1, &x2, &y2);
73
76
84
86 rect.setCoords(x1, y1, x2, y2);
87
89 }
References alignByPow2ButOneHi(), and alignByPow2Lo().
◆ coordToLodCoord()
| static int KisLodTransformBase::coordToLodCoord |
( |
int | x, |
|
|
int | lod ) |
|
inlinestatic |
◆ divideSafe()
| static int KisLodTransformBase::divideSafe |
( |
int | x, |
|
|
int | lod ) |
|
inlinestaticprivate |
◆ lodToInvScale()
| static qreal KisLodTransformBase::lodToInvScale |
( |
int | levelOfDetail | ) |
|
|
inlinestatic |
◆ lodToScale() [1/2]
| static qreal KisLodTransformBase::lodToScale |
( |
int | levelOfDetail | ) |
|
|
inlinestatic |
Definition at line 31 of file kis_lod_transform_base.h.
31 {
32 return levelOfDetail > 0 ? 1.0 / (1 << qMax(0, levelOfDetail)) : 1.0;
33 }
◆ lodToScale() [2/2]
template<class PaintDeviceTypeSP >
| static qreal KisLodTransformBase::lodToScale |
( |
PaintDeviceTypeSP | device | ) |
|
|
inlinestatic |
◆ map() [1/3]
| QRect KisLodTransformBase::map |
( |
const QRect & | rc | ) |
const |
|
inline |
◆ map() [2/3]
| QRectF KisLodTransformBase::map |
( |
const QRectF & | rc | ) |
const |
|
inline |
◆ map() [3/3]
template<class T >
| T KisLodTransformBase::map |
( |
const T & | object | ) |
const |
|
inline |
◆ mapInverted() [1/2]
| QRect KisLodTransformBase::mapInverted |
( |
const QRect & | rc | ) |
const |
|
inline |
◆ mapInverted() [2/2]
| QRectF KisLodTransformBase::mapInverted |
( |
const QRectF & | rc | ) |
const |
|
inline |
◆ scaledRect()
| static QRect KisLodTransformBase::scaledRect |
( |
const QRect & | srcRect, |
|
|
int | lod ) |
|
inlinestatic |
◆ scaleToLod()
| static int KisLodTransformBase::scaleToLod |
( |
qreal | scale, |
|
|
int | maxLod ) |
|
inlinestatic |
Definition at line 27 of file kis_lod_transform_base.h.
27 {
28 return qMin(maxLod, qMax(0, qFloor(std::log2(1.0 / scale))));
29 }
◆ transform()
| QTransform KisLodTransformBase::transform |
( |
| ) |
const |
|
inline |
◆ upscaledRect()
| static QRect KisLodTransformBase::upscaledRect |
( |
const QRect & | srcRect, |
|
|
int | lod ) |
|
inlinestatic |
Definition at line 111 of file kis_lod_transform_base.h.
111 {
112 qint32 x1, y1, x2, y2;
113 srcRect.getCoords(&x1, &y1, &x2, &y2);
114
115 x2++;
116 y2++;
117
118 x1 <<= lod;
119 y1 <<= lod;
120 x2 <<= lod;
121 y2 <<= lod;
122
123 x2--;
124 y2--;
125
127 rect.setCoords(x1, y1, x2, y2);
128
130 }
◆ KisRectsGrid
◆ m_levelOfDetail
| int KisLodTransformBase::m_levelOfDetail |
|
protected |
◆ m_transform
| QTransform KisLodTransformBase::m_transform |
|
protected |
The documentation for this class was generated from the following file: