56 , m_opacityOption(settings.data(), node)
57 , m_sizeOption(settings.data())
58 , m_rotationOption(settings.data())
59 , m_rateOption(settings.data())
60 , m_densityOption(settings.data())
61 , m_lineWidthOption(settings.data())
62 , m_offsetScaleOption(settings.data())
94 if (lineWidth == 1.0) {
102 if (lineWidth == 1.0) {
131 if (pi1.
pos() == pi2.
pos()) {
151 QPointF prevMouse = pi1.
pos();
152 QPointF mousePosition = pi2.
pos();
158 if ((scale *
m_brush->width()) <= 0.01 || (scale *
m_brush->height()) <= 0.01)
return;
172 qreal thresholdDistance = 0.0;
185 thresholdDistance = pow(
m_radius, 2);
190 thresholdDistance = pow(
m_radius * scale, 2);
194 const qreal density = thresholdDistance * currentProbability;
197 qreal probability = 1.0 - currentProbability;
204 quint8 opacityU8 = 0;
207 QPoint positionInMask;
212 for (
int i = 0; i < size; i++) {
213 diff =
m_points.at(i) - mousePosition;
214 distance = diff.x() * diff.x() + diff.y() * diff.y();
217 bool makeConnection =
false;
220 makeConnection =
true;
226 positionInMask = (diff +
m_hotSpot).toPoint();
231 if (opacityU8 != 0) {
232 makeConnection =
true;
239 if (!makeConnection) {
252 QPointF offsetPt = diff * currentOffsetScale;
266 randomColor.setRgbF(
r1 * painterColor.redF(),
267 r2 * painterColor.greenF(),
268 r3 * painterColor.blueF());
278 opacity *= qRound((1.0 - (
distance / thresholdDistance)));
291 drawConnection(mousePosition + offsetPt, mousePosition - offsetPt, currentLineWidth);
const qreal OPACITY_OPAQUE_F
qreal distance(const QPointF &p1, const QPointF &p2)
The KisDabCache class provides caching for dabs into the brush paintop.
KisFixedPaintDeviceSP fetchDab(const KoColorSpace *cs, KisColorSource *colorSource, const QPointF &cursorPoint, KisDabShape const &, const KisPaintInformation &info, qreal softnessFactor, QRect *dstDabRect, qreal lightnessStrength=1.0)
quint32 pixelSize() const
const KoColorSpace * colorSpace() const
void apply(KisPainter *painter, const KisPaintInformation &info) const
KisPaintDeviceSP createCompositionSourceDevice() const
const KoColorSpace * colorSpace() const
void drawDDALine(const QPointF &start, const QPointF &end)
void renderMirrorMask(QRect rc, KisFixedPaintDeviceSP dab)
void drawWuLine(const QPointF &start, const QPointF &end)
void setOpacityF(qreal opacity)
void bitBlt(qint32 dstX, qint32 dstY, const KisPaintDeviceSP srcDev, qint32 srcX, qint32 srcY, qint32 srcWidth, qint32 srcHeight)
void drawLine(const QPointF &start, const QPointF &end)
void setPaintColor(const KoColor &color)
QList< KoResourceLoadResult > prepareLinkedResources(const KisPropertiesConfigurationPointer settings, KisResourcesInterfaceSP resourcesInterface) const
void readOptionSetting(KisPropertiesConfigurationPointer settings, KisResourcesInterfaceSP resourcesInterface, KoCanvasResourcesInterfaceSP canvasResourcesInterface)
qreal generateNormalized() const
qreal apply(const KisPaintInformation &info) const
KisSpacingInformation paintAt(const KisPaintInformation &info) override
KisOffsetScaleOption m_offsetScaleOption
KisRotationOption m_rotationOption
KisSketchPaintOp(const KisPaintOpSettingsSP settings, KisPainter *painter, KisNodeSP node, KisImageSP image)
void paintLine(const KisPaintInformation &pi1, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance) override
KisDensityOption m_densityOption
void drawConnection(const QPointF &start, const QPointF &end, double lineWidth)
KisSizeOption m_sizeOption
KisTimingInformation updateTimingImpl(const KisPaintInformation &info) const override
KisSpacingInformation updateSpacingImpl(const KisPaintInformation &info) const override
KisRateOption m_rateOption
KisFixedPaintDeviceSP m_maskDab
QRectF m_brushBoundingBox
KisOpacityOption m_opacityOption
KisSketchOpOptionData m_sketchProperties
KisAirbrushOptionData m_airbrushOption
~KisSketchPaintOp() override
void doPaintLine(const KisPaintInformation &pi1, const KisPaintInformation &pi2)
void updateBrushMask(const KisPaintInformation &info, qreal scale, qreal rotation)
static QList< KoResourceLoadResult > prepareLinkedResources(const KisPaintOpSettingsSP settings, KisResourcesInterfaceSP resourcesInterface)
QVector< QPointF > m_points
KisBrushOptionProperties m_brushOption
KisLineWidthOption m_lineWidthOption
qreal apply(const KisPaintInformation &info) const
virtual quint8 opacityU8(const quint8 *pixel) const =0
void fromQColor(const QColor &c)
Convenient function for converting from a QColor.
void toQColor(QColor *c) const
a convenience method for the above.
KisSpacingInformation effectiveSpacing(qreal dabWidth, qreal dabHeight, bool isotropicSpacing, qreal rotation, bool axesFlipped, qreal spacingVal, bool autoSpacingActive, qreal autoSpacingCoeff, qreal lodScale, const KisAirbrushOptionData *airbrushOption, const KisSpacingOption *spacingOption, const KisPaintInformation &pi)
KisTimingInformation effectiveTiming(const KisAirbrushOptionData *airbrushOption, const KisRateOption *rateOption, const KisPaintInformation &pi)
bool read(const KisPropertiesConfiguration *setting)
KisPaintDeviceSP source() const
virtual void paintLine(const KisPaintInformation &pi1, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance)
bool read(const KisPropertiesConfiguration *setting)