10#include "QPainterPath"
12#include <klocalizedstring.h>
72 setObjectName(
"tool_SmartPatch");
74 m_d->maskDevPainter.begin(
m_d->maskDev );
76 m_d->maskDevPainter.setPaintColor(
KoColor(Qt::magenta,
m_d->maskDev->colorSpace()));
77 m_d->maskDevPainter.setBackgroundColor(
KoColor(Qt::white,
m_d->maskDev->colorSpace()));
83 m_d->optionsWidget =
nullptr;
84 m_d->maskDevPainter.end();
122 m_d->maskDevPainter.fillPainterPath(currentBrushOutline);
134 i18n(
"Select a paint layer to use this tool"),
164 if (
m_d->optionsWidget) {
165 accuracy =
m_d->optionsWidget->getAccuracy();
166 patchRadius =
m_d->optionsWidget->getPatchRadius();
178 accuracy, patchRadius,
185 m_d->maskDev->clear();
190 const qreal diameter =
m_d->brushRadius;
191 QPainterPath outline;
192 outline.addEllipse(QPointF(0,0), -0.5 * diameter, -0.5 * diameter );
213 static QPointF lastDocPoint = QPointF(0,0);
215 lastDocPoint=outlineDocPoint;
220 QRectF outlinePixelRect =
m_d->brushOutline.boundingRect();
229 qreal xoffset = 2.0/zoomX;
230 qreal yoffset = 2.0/zoomY;
232 if (!outlineDocRect.isEmpty()) {
233 outlineDocRect.adjust(-xoffset,-yoffset,xoffset,yoffset);
236 if (!
m_d->oldOutlineRect.isEmpty()) {
240 if (!outlineDocRect.isEmpty()) {
244 m_d->oldOutlineRect = outlineDocRect;
257 painter.setBrush(Qt::magenta);
258 QImage img =
m_d->maskDev->convertToQImage(0);
259 if( !img.size().isEmpty() ){
271 m_d->optionsWidget->setObjectName(
toolId() +
"option widget");
273 return m_d->optionsWidget;
QVector< KisImageSignalType > KisImageSignalVector
KisCoordinatesConverter * coordinatesConverter
void updateCanvas(const QRectF &rc) override
KisViewManager * viewManager() const
const KoViewConverter * viewConverter() const override
qreal effectivePhysicalZoom() const
static QCursor waitCursor()
QPointF documentToPixel(const QPointF &documentCoord) const
QPointF pixelToDocument(const QPointF &pixelCoord) const
@ FillStyleForegroundColor
static KisPaintDeviceSP convertToAlphaAsAlpha(KisPaintDeviceSP src)
void applyCommand(KUndo2Command *command, KisStrokeJobData::Sequentiality sequentiality=KisStrokeJobData::SEQUENTIAL, KisStrokeJobData::Exclusivity exclusivity=KisStrokeJobData::NORMAL)
The KisResourcesSnapshot class takes a snapshot of the various resources like colors and settings use...
KisSelectionSP activeSelection() const
KUndo2Command * endAndTake()
KisCanvasResourceProvider * canvasResourceProvider()
QPointF point
The point in document coordinates.
virtual void zoom(qreal *zoomX, qreal *zoomY) const
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
QRect patchImage(const KisPaintDeviceSP imageDev, const KisPaintDeviceSP maskDev, int patchRadius, int accuracy, KisSelectionSP selection)
KUndo2MagicString kundo2_i18n(const char *text)
QPointF alignForZoom(const QPointF &pt, qreal zoom)
static KoColorSpaceRegistry * instance()