void KoColorConversionFromAlphaTransformation::transform(const quint8 *src, quint8 *dst, qint32 nPixels) const { qint32 size = dstColorSpace()->pixelSize(); while (nPixels > 0) { dstColorSpace()->setOpacity(dst, *src, 1); src ++; dst += size; nPixels--; } }
void KoColorConversionFromAlphaTransformation::transform(const quint8 *src, quint8 *dst, qint32 nPixels) const { quint16 data[4]; qint32 size = dstColorSpace()->pixelSize(); data[1] = UINT16_MAX / 2; // a data[2] = UINT16_MAX / 2; // b data[3] = UINT16_MAX; // A while (nPixels > 0) { data[0] = UINT8_TO_UINT16(*src); // L dstColorSpace()->fromLabA16((quint8*)data, dst, 1); src ++; dst += size; nPixels--; } }
void KoCtlColorConversionTransformation::transform(const quint8 *src8, quint8 *dst8, qint32 nPixels) const { dbgPigment << "Transformation from " << srcColorSpace()->id() << " " << srcColorSpace()->profile()->name() << " to " << dstColorSpace()->id() << " " << dstColorSpace()->profile()->name(); KoCtlBuffer src( reinterpret_cast<char*>(const_cast<quint8*>(src8) ), nPixels * srcColorSpace()->pixelSize()); KoCtlBuffer dst( reinterpret_cast<char*>(dst8), nPixels * dstColorSpace()->pixelSize()); const KoColorProfile* ctlp = d->srcIsCTL ? srcColorSpace()->profile() : dstColorSpace()->profile(); for( std::list<GTLCore::String>::const_iterator cit = d->program->varyings().begin(); cit != d->program->varyings().end(); ++cit) { QVariant v = ctlp->property( cit->c_str() ); dbgPigment << "Setting " << cit->c_str() << " to " << v; if( v.type() == QVariant::Double) { d->program->setVarying( *cit, (float)v.toDouble() ); } else if( v.type() == QVariant::Int) { d->program->setVarying( *cit, v.toInt() ); } else if( v.type() == QVariant::Bool) { d->program->setVarying( *cit, v.toBool() ); } else { dbgPigment << "Unsuitable type"; } } d->program->apply(src, dst); }
virtual void transform(const quint8 *src, quint8 *dst, qint32 numPixels) const { const KoColorSpace* srcCs = srcColorSpace(); const KoColorSpace* dstCs = dstColorSpace(); quint32 srcPixelsize = srcCs->pixelSize(); quint32 dstPixelsize = dstCs->pixelSize(); QColor c; while (numPixels > 0) { srcCs->toQColor(src, &c); dstCs->fromQColor(c, dst); src += srcPixelsize; dst += dstPixelsize; --numPixels; } }