7#ifndef __KIS_SCANLINE_FILL_H
8#define __KIS_SCANLINE_FILL_H
10#include <QScopedPointer>
12#include <kritaimage_export.h>
28 void fill(
const KoColor &fillColor);
33 void fillUntilColor(
const KoColor &fillColor,
const KoColor &boundaryColor);
93 void clearNonZeroComponent();
103 void fillContiguousGroup(
KisPaintDeviceSP groupMapDevice, qint32 groupIndex);
110 void setThreshold(
int threshold);
123 void setOpacitySpread(
int opacitySpread);
133 void setCloseGap(
int closeGap);
141 friend class KisScanlineFillTest;
144 template <
typename DifferencePolicy,
typename SelectionPolicy,
typename PixelAccessPolicy>
146 DifferencePolicy &differencePolicy,
147 SelectionPolicy &selectionPolicy,
148 PixelAccessPolicy &pixelAccessPolicy);
150 template <
typename DifferencePolicy,
typename SelectionPolicy,
typename PixelAccessPolicy>
151 void extendedPass(
KisFillInterval *currentInterval,
int srcRow,
bool extendRight,
152 DifferencePolicy &differencePolicy,
153 SelectionPolicy &selectionPolicy,
154 PixelAccessPolicy &pixelAccessPolicy);
156 template <
typename DifferencePolicy,
typename SelectionPolicy,
typename PixelAccessPolicy>
157 void runImpl(DifferencePolicy &differencePolicy,
158 SelectionPolicy &selectionPolicy,
159 PixelAccessPolicy &pixelAccessPolicy);
161 template <
template <
typename SrcPixelType>
typename OptimizedDifferencePolicy,
162 typename SlowDifferencePolicy,
163 typename SelectionPolicy,
typename PixelAccessPolicy>
164 void selectDifferencePolicyAndRun(
const KoColor &srcColor,
165 SelectionPolicy &selectionPolicy,
166 PixelAccessPolicy &pixelAccessPolicy);
168 template <
typename DifferencePolicy,
typename SelectionPolicy,
typename PixelAccessPolicy>
170 SelectionPolicy &selectionPolicy,
171 PixelAccessPolicy &pixelAccessPolicy);
173 template <
typename DifferencePolicy,
typename SelectionPolicy,
typename PixelAccessPolicy>
174 bool fillOpacity(DifferencePolicy &differencePolicy,
175 SelectionPolicy &selectionPolicy,
176 PixelAccessPolicy &pixelAccessPolicy,
178 const QRect&
rect)
const;
180 inline bool tryPushingCloseGapSeed(
int x,
int y,
bool allowExpand);
188 const QScopedPointer<Private>
m_d;
const QScopedPointer< Private > m_d