Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tool_smart_patch.cpp File Reference
#include "kis_tool_smart_patch.h"
#include "QApplication"
#include "QPainterPath"
#include <klocalizedstring.h>
#include <KoColor.h>
#include <KisViewManager.h>
#include "kis_canvas2.h"
#include "kis_cursor.h"
#include "kis_painter.h"
#include "kis_paintop_preset.h"
#include "kundo2magicstring.h"
#include "kundo2stack.h"
#include "commands_new/kis_transaction_based_command.h"
#include "kis_transaction.h"
#include "kis_processing_applicator.h"
#include "kis_datamanager.h"
#include "KoColorSpaceRegistry.h"
#include <KisCursorOverrideLock.h>
#include "kis_tool_smart_patch_options_widget.h"
#include "libs/image/kis_paint_device_debug_utils.h"
#include "kis_paint_layer.h"
#include "kis_algebra_2d.h"
#include "kis_resources_snapshot.h"

Go to the source code of this file.

Classes

class  KisToolSmartPatch::InpaintCommand
 
struct  KisToolSmartPatch::Private
 

Functions

QRect patchImage (KisPaintDeviceSP imageDev, KisPaintDeviceSP maskDev, int radius, int accuracy, KisSelectionSP selection)
 

Function Documentation

◆ patchImage()

QRect patchImage ( KisPaintDeviceSP imageDev,
KisPaintDeviceSP maskDev,
int radius,
int accuracy,
KisSelectionSP selection )

Definition at line 979 of file kis_inpaint.cpp.

980{
981 QRect maskRect = getMaskBoundingBox(maskDev);
982 QRect imageRect = imageDev->exactBounds();
983
984 float scale = 1.0 + (accuracy / 25.0); //higher accuracy means we include more surrounding area around the patch. Minimum 2x padding.
985 int dx = maskRect.width() * scale;
986 int dy = maskRect.height() * scale;
987 maskRect.adjust(-dx, -dy, dx, dy);
988 maskRect = maskRect.intersected(imageRect);
989
990 if (!maskRect.isEmpty()) {
991 Inpaint inpaint(imageDev, maskDev, patchRadius, maskRect);
992 MaskedImageSP output = inpaint.patch();
993 output->toPaintDevice(imageDev, maskRect, selection);
994 }
995
996 return maskRect;
997}
QRect exactBounds() const
void toPaintDevice(KisPaintDeviceSP imageDev, QRect rect, KisSelectionSP selection)
QRect getMaskBoundingBox(KisPaintDeviceSP maskDev)

References KisPaintDevice::exactBounds(), getMaskBoundingBox(), Inpaint::patch(), and MaskedImage::toPaintDevice().