10#include "QPainterPath"
12#include <klocalizedstring.h>
73 setObjectName(
"tool_SmartPatch");
75 m_d->maskDevPainter.begin(
m_d->maskDev );
77 m_d->maskDevPainter.setPaintColor(
KoColor(Qt::magenta,
m_d->maskDev->colorSpace()));
78 m_d->maskDevPainter.setBackgroundColor(
KoColor(Qt::white,
m_d->maskDev->colorSpace()));
84 m_d->optionsWidget =
nullptr;
85 m_d->maskDevPainter.end();
123 m_d->maskDevPainter.fillPainterPath(currentBrushOutline);
135 i18n(
"Select a paint layer to use this tool"),
165 if (
m_d->optionsWidget) {
166 accuracy =
m_d->optionsWidget->getAccuracy();
167 patchRadius =
m_d->optionsWidget->getPatchRadius();
179 accuracy, patchRadius,
186 m_d->maskDev->clear();
191 const qreal diameter =
m_d->brushRadius;
192 QPainterPath outline;
193 outline.addEllipse(QPointF(0,0), -0.5 * diameter, -0.5 * diameter );
214 static QPointF lastDocPoint = QPointF(0,0);
216 lastDocPoint=outlineDocPoint;
221 QRectF outlinePixelRect =
m_d->brushOutline.boundingRect();
230 qreal xoffset = 2.0/zoomX;
231 qreal yoffset = 2.0/zoomY;
233 if (!outlineDocRect.isEmpty()) {
234 outlineDocRect.adjust(-xoffset,-yoffset,xoffset,yoffset);
237 if (!
m_d->oldOutlineRect.isEmpty()) {
241 if (!outlineDocRect.isEmpty()) {
245 m_d->oldOutlineRect = outlineDocRect;
258 painter.setBrush(Qt::magenta);
261 if( !img.size().isEmpty() ){
274 m_d->optionsWidget->setObjectName(
toolId() +
"option widget");
276 return m_d->optionsWidget;
QVector< KisImageSignalType > KisImageSignalVector
KisDisplayColorConverter displayColorConverter
KisCoordinatesConverter * coordinatesConverter
void updateCanvas(const QRectF &rc) override
KisViewManager * viewManager() const
const KoViewConverter * viewConverter() const override
qreal effectivePhysicalZoom() const
static QCursor waitCursor()
QImage convertImageToDisplayColorSpace(KisPaintDeviceSP srcDevice, QRect source=QRect(), bool applyOcio=false) const
convertImageToDisplayColorSpace Same as convertColorToDisplayColorSpace, but then for a KisPaintDevic...
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()