56 m_count = m_total = 0;
98 qreal posX = info.
pos().x() - (gridWidth/2) + (cellWidth/2) - horizontalOffset;
99 qreal posY = info.
pos().y() - (gridHeight/2) + (cellHeight/2) - verticalOffset;
102 posX = posX - std::fmod(posX, cellWidth) + horizontalOffset;
103 posY = posY - std::fmod(posY, cellHeight) + verticalOffset;
104 const QRectF dabRect(posX , posY , cellWidth, cellHeight);
105 const QRect dabRectAligned = dabRect.toAlignedRect();
107 divide = qMax(1, divide);
108 const qreal yStep = cellHeight / (qreal)divide;
109 const qreal xStep = cellWidth / (qreal)divide;
114 QScopedPointer<KisCrossDeviceColorSampler> colorSampler;
122 if (vertBorder == horzBorder) {
131 bool shouldColor =
true;
136 for (
int y = 0; y < (gridHeight)/yStep; y++) {
137 for (
int x = 0; x < (gridWidth)/xStep; x++) {
139 tile = QRectF(dabRect.x() + x * xStep, dabRect.y() + y * yStep, xStep, yStep);
140 tile.adjust(vertBorder, horzBorder, -vertBorder, -horzBorder);
141 tile = tile.normalized();
146 colorSampler->sampleOldColor(tile.center().x(), tile.center().y(), color.
data());
153 const quint8 *colors[2];
154 colors[0] = color.
data();
157 qint16 colorWeights[2];
161 colorWeights[0] =
static_cast<quint16
>(blend * MAX_16BIT);
162 colorWeights[1] =
static_cast<quint16
>((1.0 - blend) * MAX_16BIT);
167 QHash<QString, QVariant> params;
199 m_dab->
fill(tile.topLeft().x(), tile.topLeft().y(), tile.width(), tile.height(), color.
data());
230 int msec = time.elapsed();
231 dbgKrita << msec <<
" ms/dab " <<
"[average: " << m_total / (qreal)m_count <<
"]";
KisColorOptionData m_colorProperties
KisSpacingInformation computeSpacing(qreal lodScale) const
KisGridPaintOp(const KisPaintOpSettingsSP settings, KisPainter *painter, KisNodeSP node, KisImageSP image)
KisSpacingInformation updateSpacingImpl(const KisPaintInformation &info) const override
~KisGridPaintOp() override
KisGridOpOptionData m_properties
KisGridShapeOptionData m_shapeProperties
KisSpacingInformation paintAt(const KisPaintInformation &info) override
KisPaintDeviceSP createCompositionSourceDevice() const
void fill(const QRect &rc, const KoColor &color)
const KoColorSpace * colorSpace() const
@ FillStyleForegroundColor
void paintEllipse(const QRectF &rect)
void drawDDALine(const QPointF &start, const QPointF &end)
void drawThickLine(const QPointF &start, const QPointF &end, int startWidth, int endWidth)
void renderMirrorMask(QRect rc, KisFixedPaintDeviceSP dab)
void setOpacityF(qreal opacity)
void bitBlt(qint32 dstX, qint32 dstY, const KisPaintDeviceSP srcDev, qint32 srcX, qint32 srcY, qint32 srcWidth, qint32 srcHeight)
void setFillStyle(FillStyle fillStyle)
Set the current style with which to fill.
void drawLine(const QPointF &start, const QPointF &end)
void setPaintColor(const KoColor &color)
qreal generateNormalized() const
KoColorTransformation * createColorTransformation(const QString &id, const QHash< QString, QVariant > ¶meters) const
KoMixColorsOp * mixColorsOp
void setOpacity(quint8 alpha)
virtual void mixColors(const quint8 *const *colors, const qint16 *weights, int nColors, quint8 *dst, int weightSum=255) const =0
KisCrossDeviceColorSamplerImpl< SamplerTraitReal > KisCrossDeviceColorSampler
virtual KisPaintDeviceSP paintDevice() const =0
bool read(const KisPropertiesConfiguration *setting)
qreal grid_vertical_border
bool read(const KisPropertiesConfiguration *setting)
bool grid_pressure_division
qreal grid_horizontal_border
bool read(const KisPropertiesConfiguration *setting)
int shape
Ellipse, rectangle, line, pixel, anti-aliased pixel.
KisPaintDeviceSP source() const