37 : m_dev(dev), m_progressUpdater(progress), m_cropDst(cropDst)
41 m.rotate(180. * aX /
M_PI, QVector3D(1, 0, 0));
42 m.rotate(180. * aY /
M_PI, QVector3D(0, 1, 0));
44 QTransform project = m.toTransform(
distance);
45 QTransform t = QTransform::fromTranslate(center.x(), center.y());
53 : m_dev(dev), m_progressUpdater(progress), m_cropDst(cropDst)
59 const QRect &dstBaseClipRect,
61 QPolygonF *dstClipPolygon)
63 QPolygonF
bounds = srcRect;
66 QRectF clipRect = dstBaseClipRect;
73 newBounds = newBounds.intersected(clipRect);
75 path.addPolygon(newBounds);
77 *dstClipPolygon = newBounds;
91 QPolygonF dstClipPolygonUnused;
96 &dstClipPolygonUnused);
115 :
m_accessor(device->createRandomSubAccessor())
132 :
m_accessor(device->createRandomConstAccessorNG()),
146template <
class SrcAccessorWrapper>
172 SrcAccessorWrapper srcAcc(cloneDevice);
176 for (
int y =
rect.y(); y <
rect.y() +
rect.height(); ++y) {
177 for (
int x =
rect.x(); x <
rect.x() +
rect.width(); ++x) {
184 srcAcc.samplePixel(srcPoint, accessor->
rawData());
188 progressHelper.
step();
195 runImpl<BilinearWrapper>();
197 runImpl<NearestNeighbourWrapper>();
203 const QRect &dstRect)
209 if (srcClipRect.isEmpty())
return;
221 for (
int y = dstRect.y(); y < dstRect.y() + dstRect.height(); ++y) {
222 for (
int x = dstRect.x(); x < dstRect.x() + dstRect.width(); ++x) {
229 srcAcc->
moveTo(srcPoint.x(), srcPoint.y());
233 progressHelper.
step();
float value(const T *src, size_t ch)
const QString COMPOSITE_COPY
qreal distance(const QPointF &p1, const QPointF &p2)
virtual quint8 * rawData()=0
virtual const quint8 * oldRawData() const =0
virtual bool wrapAroundMode() const =0
virtual QRect imageBorderRect() const
virtual QRect bounds() const =0
quint32 pixelSize() const
QRect exactBounds() const
const KoColorSpace * colorSpace() const
KisDefaultBoundsBaseSP defaultBounds() const
KisRandomSubAccessorSP createRandomSubAccessor() const
KisRandomAccessorSP createRandomAccessorNG()
void bitBlt(qint32 dstX, qint32 dstY, const KisPaintDeviceSP srcDev, qint32 srcX, qint32 srcY, qint32 srcWidth, qint32 srcHeight)
void setCompositeOpId(const KoCompositeOp *op)
virtual void moveTo(qint32 x, qint32 y)=0
void sampledOldRawData(quint8 *dst)
void moveTo(qreal x, qreal y)
QVector< QRect > rects() const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
#define KIS_ASSERT_RECOVER_RETURN(cond)
#define KIS_ASSERT_RECOVER_NOOP(cond)
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
T kisGrowRect(const T &rect, U offset)
KisSharedPtr< KisRandomSubAccessor > KisRandomSubAccessorSP
KisSharedPtr< KisRandomAccessorNG > KisRandomAccessorSP
Rect blowRect(const Rect &rect, qreal coeff)
KisRegion splitPath(const QPainterPath &path)
KisRandomSubAccessorSP m_accessor
BilinearWrapper(KisPaintDeviceSP device)
void samplePixel(const QPointF &pt, quint8 *dst)
void samplePixel(const QPointF &pt, quint8 *dst)
NearestNeighbourWrapper(KisPaintDeviceSP device)
KisRandomConstAccessorSP m_accessor