22 return QGradientStops();
29 return QGradientStops();
36 stop.first = position;
39 if (canvasResourcesInterface) {
44 if (canvasResourcesInterface) {
63 qreal lastStopPosition = -1.0;
65 if (
qFuzzyCompare(stopGradientStop.position, lastStopPosition)) {
67 stopGradientStop.color, stopGradientStop.type, stopGradientStop.position + 0.000001,
68 canvasResourcesInterface
70 lastStopPosition = stopGradientStop.position + 0.000001;
73 stopGradientStop.color, stopGradientStop.type, stopGradientStop.position,
74 canvasResourcesInterface
76 lastStopPosition = stopGradientStop.position;
89 if (canvasResourcesInterface) {
94 if (canvasResourcesInterface) {
96 stop.second.setAlpha(0);
100 if (canvasResourcesInterface) {
105 if (canvasResourcesInterface) {
107 stop.second.setAlpha(0);
119 QGradientStops stops;
125 QGradientStop lastStop;
126 lastStop.first = -1.0;
132 segment->startColor(), segment->startType(), segment->startOffset(),
133 canvasResourcesInterface
136 if (stop.second != lastStop.second) {
137 stop.first = stop.first + 0.000001;
147 segment->endColor(), segment->endType(), segment->endOffset(),
148 canvasResourcesInterface
151 if (stop.second != lastStop.second) {
152 stop.first = stop.first + 0.000001;
183 QGradient *qGradient =
new QLinearGradient;
193 QGradient *qGradient =
new QLinearGradient;
232 for (
const QGradientStop &qGradientStop : gradient) {
235 stop.
position = qGradientStop.first;
236 stop.
color =
KoColor(qGradientStop.second, stopGradient->colorSpace());
240 stopGradient->setStops(stops);
241 stopGradient->setType(QGradient::LinearGradient);
242 stopGradient->setValid(
true);
249 if (!gradient || gradient->type() == QGradient::NoGradient) {
253 stopGradient->setType(gradient->type());
254 stopGradient->setSpread(gradient->spread());
284 if (canvasResourcesInterface) {
295 if (canvasResourcesInterface) {
325 segment->startColor(), segment->startType(), segment->startOffset(),
326 canvasResourcesInterface
331 lastStop.
type = stop.type;
332 lastStop.
color = stop.color;
337 segment->endColor(), segment->endType(), segment->endOffset(),
338 canvasResourcesInterface
343 lastStop.
type = stop.type;
344 lastStop.
color = stop.color;
349 stopGradient->setType(gradient->type());
350 stopGradient->setSpread(gradient->spread());
351 stopGradient->setStops(stops);
353 stopGradient->setName(gradient->name());
354 stopGradient->setFilename(gradient->filename());
355 stopGradient->setValid(
true);
363 const QGradientStops &stops = gradient;
365 for (
int i = 0; i < stops.size() - 1; ++i) {
369 segmentGradient->createSegment(
371 stops[i].first, stops[i + 1].first, (stops[i].first + stops[i + 1].first) / 2,
372 stops[i].second, stops[i + 1].second
376 segmentGradient->setValid(
true);
378 return segmentGradient;
383 if (!gradient || gradient->type() == QGradient::NoGradient) {
387 segmentGradient->setType(gradient->type());
388 segmentGradient->setSpread(gradient->spread());
389 return segmentGradient;
414 for (
int i = 0; i < stops.size() - 1; ++i) {
415 if (
qFuzzyCompare(stops[i].position, stops[i + 1].position)) {
439 segmentGradient->createSegment(
441 stops[i].position, stops[i + 1].position, (stops[i].position + stops[i + 1].position) / 2,
442 stops[i].color.toQColor(), stops[i + 1].color.toQColor(),
447 segmentGradient->setType(gradient->type());
448 segmentGradient->setSpread(gradient->spread());
450 segmentGradient->setName(gradient->name());
451 segmentGradient->setFilename(gradient->filename());
452 segmentGradient->setValid(
true);
454 return segmentGradient;
KoGradientSegmentEndpointType
@ BACKGROUND_TRANSPARENT_ENDPOINT
@ FOREGROUND_TRANSPARENT_ENDPOINT
void convertTo(const KoColorSpace *cs, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags)
void setOpacity(quint8 alpha)
void toQColor(QColor *c) const
a convenience method for the above.
static bool qFuzzyCompare(half p1, half p2)
Namespace containing functions to convert to/from different types of gradients.
QGradient * toQGradient(KoAbstractGradientSP gradient, KoCanvasResourcesInterfaceSP canvasResourcesInterface)
Convert a KoAbstractGradientSP to a QGradient.
KoStopGradientSP toStopGradient(const QGradientStops &gradient)
Convert a QGradientStop list to a KoStopGradientSP.
KoGradientStop toKoGradientStop(const KoColor &color, KoGradientSegmentEndpointType type, qreal offset, KoCanvasResourcesInterfaceSP canvasResourcesInterface)
KoSegmentGradientSP toSegmentGradient(const QGradientStops &gradient)
Convert a QGradientStop list to a krita segment gradient.
QGradientStops toQGradientStops(KoAbstractGradientSP gradient, KoCanvasResourcesInterfaceSP canvasResourcesInterface)
Convert a KoAbstractGradientSP to a QGradientStop list.
QGradientStop toQGradientStop(const KoColor &color, KoGradientStopType type, qreal position, KoCanvasResourcesInterfaceSP canvasResourcesInterface)
KoAbstractGradientSP toAbstractGradient(const QGradientStops &gradient)
Convert a QGradientStop list to a krita abstract gradient.
@ BackgroundColor
The active background color selected for this canvas.
@ ForegroundColor
The active foreground color selected for this canvas.