Krita Source Code Documentation
Loading...
Searching...
No Matches
GridIterationTools::QImagePolygonOp Struct Reference

#include <kis_grid_interpolation_tools.h>

Public Member Functions

void operator() (const QPolygonF &srcPolygon, const QPolygonF &dstPolygon)
 
void operator() (const QPolygonF &srcPolygon, const QPolygonF &dstPolygon, const QPolygonF &clipDstPolygon)
 
 QImagePolygonOp (const QImage &srcImage, QImage &dstImage, const QPointF &srcImageOffset, const QPointF &dstImageOffset)
 

Public Attributes

QImage & m_dstImage
 
QPointF m_dstImageOffset
 
QRect m_dstImageRect
 
const QImage & m_srcImage
 
QPointF m_srcImageOffset
 
QRect m_srcImageRect
 

Detailed Description

Definition at line 237 of file kis_grid_interpolation_tools.h.

Constructor & Destructor Documentation

◆ QImagePolygonOp()

GridIterationTools::QImagePolygonOp::QImagePolygonOp ( const QImage & srcImage,
QImage & dstImage,
const QPointF & srcImageOffset,
const QPointF & dstImageOffset )
inline

Member Function Documentation

◆ operator()() [1/2]

void GridIterationTools::QImagePolygonOp::operator() ( const QPolygonF & srcPolygon,
const QPolygonF & dstPolygon )
inline

Definition at line 250 of file kis_grid_interpolation_tools.h.

250 {
251 this->operator() (srcPolygon, dstPolygon, dstPolygon);
252 }
void operator()(const QPolygonF &srcPolygon, const QPolygonF &dstPolygon)

References operator()().

◆ operator()() [2/2]

void GridIterationTools::QImagePolygonOp::operator() ( const QPolygonF & srcPolygon,
const QPolygonF & dstPolygon,
const QPolygonF & clipDstPolygon )
inline

Definition at line 254 of file kis_grid_interpolation_tools.h.

254 {
255 QRect boundRect = clipDstPolygon.boundingRect().toAlignedRect();
256 KisFourPointInterpolatorBackward interp(srcPolygon, dstPolygon);
257
258 for (int y = boundRect.top(); y <= boundRect.bottom(); y++) {
259 interp.setY(y);
260 for (int x = boundRect.left(); x <= boundRect.right(); x++) {
261
262 QPointF srcPoint(x, y);
263 if (clipDstPolygon.containsPoint(srcPoint, Qt::OddEvenFill)) {
264
265 interp.setX(srcPoint.x());
266 QPointF dstPoint = interp.getValue();
267
268 // about srcPoint/dstPoint hell please see a
269 // comment in PaintDevicePolygonOp::operator() ()
270
271 srcPoint -= m_dstImageOffset;
273
274 QPoint srcPointI = srcPoint.toPoint();
275 QPoint dstPointI = dstPoint.toPoint();
276
277 if (!m_dstImageRect.contains(srcPointI)) continue;
278 if (!m_srcImageRect.contains(dstPointI)) continue;
279
280 m_dstImage.setPixel(srcPointI, m_srcImage.pixel(dstPointI));
281 }
282 }
283 }
284
285#ifdef DEBUG_PAINTING_POLYGONS
286 QPainter gc(&m_dstImage);
287 gc.setPen(Qt::red);
288 gc.setOpacity(0.5);
289
290 gc.setBrush(Qt::green);
291 gc.drawPolygon(clipDstPolygon.translated(-m_dstImageOffset));
292
293 gc.setBrush(Qt::blue);
294 //gc.drawPolygon(dstPolygon.translated(-m_dstImageOffset));
295
296#endif /* DEBUG_PAINTING_POLYGONS */
297
298 }
QPointF dstPoint
qreal interp(qreal r, qreal a, qreal b)
private functions

References dstPoint, interp(), m_dstImage, m_dstImageOffset, m_dstImageRect, m_srcImage, m_srcImageOffset, and m_srcImageRect.

Member Data Documentation

◆ m_dstImage

QImage& GridIterationTools::QImagePolygonOp::m_dstImage

Definition at line 301 of file kis_grid_interpolation_tools.h.

◆ m_dstImageOffset

QPointF GridIterationTools::QImagePolygonOp::m_dstImageOffset

Definition at line 303 of file kis_grid_interpolation_tools.h.

◆ m_dstImageRect

QRect GridIterationTools::QImagePolygonOp::m_dstImageRect

Definition at line 306 of file kis_grid_interpolation_tools.h.

◆ m_srcImage

const QImage& GridIterationTools::QImagePolygonOp::m_srcImage

Definition at line 300 of file kis_grid_interpolation_tools.h.

◆ m_srcImageOffset

QPointF GridIterationTools::QImagePolygonOp::m_srcImageOffset

Definition at line 302 of file kis_grid_interpolation_tools.h.

◆ m_srcImageRect

QRect GridIterationTools::QImagePolygonOp::m_srcImageRect

Definition at line 305 of file kis_grid_interpolation_tools.h.


The documentation for this struct was generated from the following file: