void KoColorConversionToAlphaTransformation::transform(const quint8 *src, quint8 *dst, qint32 nPixels) const { qint32 size = srcColorSpace()->pixelSize(); while (nPixels > 0) { *dst = srcColorSpace()->opacityU8(src); src += size; dst ++; nPixels --; } }
void KoColorConversionToAlphaTransformation::transform(const quint8 *src, quint8 *dst, qint32 nPixels) const { quint16 data[4]; qint32 size = srcColorSpace()->pixelSize(); while (nPixels > 0) { srcColorSpace()->toLabA16(src, (quint8*)data, 1); *dst = UINT16_TO_UINT8(UINT16_MULT(data[0], data[3])); // L * A src += size; dst ++; 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; } }
void KoCopyColorConversionTransformation::transform(const quint8 *srcU8, quint8 *dstU8, qint32 nPixels) const { memcpy(dstU8, srcU8, nPixels * srcColorSpace()->pixelSize()); }