void KisFilterStrokeStrategy::initStrokeCallback() { KisPainterBasedStrokeStrategy::initStrokeCallback(); KisPaintDeviceSP dev = targetDevice(); if (activeSelection() || (dev->colorSpace() != dev->compositionSourceColorSpace() && !(dev->colorSpace() == dev->compositionSourceColorSpace()))) { m_d->filterDevice = dev->createCompositionSourceDevice(dev); m_d->secondaryTransaction = new KisTransaction("", m_d->filterDevice); } else { m_d->filterDevice = dev; } }
bool pick(KisPaintDeviceSP dev, const QPoint& pos, KoColor *color) { KIS_ASSERT(dev); KoColor pickedColor; dev->pixel(pos.x(), pos.y(), &pickedColor); pickedColor.convertTo(dev->compositionSourceColorSpace()); bool validColorPicked = pickedColor.opacityU8() != OPACITY_TRANSPARENT_U8; if (validColorPicked) { pickedColor.setOpacity(OPACITY_OPAQUE_U8); *color = pickedColor; } return validColorPicked; }