6#ifndef KOALPHACOLORSPACE_H
7#define KOALPHACOLORSPACE_H
12#include "kritapigment_export.h"
27template <
typename _T,
typename _Tdst>
41template <>
inline KoID alphaIdFromChannelType<half>() {
return KoID(
"ALPHAF16", i18n(
"Alpha (16-bit floating point)")); }
50template <
class _CSTrait>
66 return alphaIdFromChannelType<channels_type>().id();
74 return colorDepthIdForChannelType<channels_type>();
80 Q_UNUSED(independence);
88 void fromQColor(
const QColor& color, quint8 *dst)
const override;
90 void toQColor(
const quint8 *src, QColor *c)
const override;
92 quint8
difference(
const quint8 *src1,
const quint8 *src2)
const override;
93 quint8
differenceA(
const quint8 *src1,
const quint8 *src2)
const override;
99 QString
channelValueText(
const quint8 *pixel, quint32 channelIndex)
const override;
103 virtual void convolveColors(quint8** colors, qreal* kernelValues, quint8 *dst, qreal factor, qreal offset, qint32 nColors,
const QBitArray & channelFlags)
const;
117 QImage
convertToQImage(
const quint8 *data, qint32 width, qint32 height,
120 KoColorConversionTransformation::ConversionFlags conversionFlags)
const override;
122 void toLabA16(
const quint8* src, quint8* dst, quint32 nPixels)
const override;
123 void fromLabA16(
const quint8* src, quint8* dst, quint32 nPixels)
const override;
125 void toRgbA16(
const quint8* src, quint8* dst, quint32 nPixels)
const override;
126 void fromRgbA16(
const quint8* src, quint8* dst, quint32 nPixels)
const override;
129 Q_UNUSED(transferValues);
130 warnPigment << i18n(
"Undefined operation in the alpha color space");
135 warnPigment << i18n(
"Undefined operation in the alpha color space");
140 warnPigment << i18n(
"Undefined operation in the alpha color space");
145 warnPigment << i18n(
"Undefined operation in the alpha color space");
148 void colorToXML(
const quint8* , QDomDocument& , QDomElement&)
const override {
149 warnPigment << i18n(
"Undefined operation in the alpha color space");
153 warnPigment << i18n(
"Undefined operation in the alpha color space");
157 warnPigment << i18n(
"Undefined operation in the alpha color space");
160 QVector <double>
fromHSY(qreal *, qreal *, qreal *)
const override {
161 warnPigment << i18n(
"Undefined operation in the alpha color space");
162 QVector <double> channelValues (1);
163 channelValues.fill(0.0);
164 return channelValues;
168 warnPigment << i18n(
"Undefined operation in the alpha color space");
171 QVector <double>
fromYUV(qreal *, qreal *, qreal *)
const override {
172 warnPigment << i18n(
"Undefined operation in the alpha color space");
173 QVector <double> channelValues (1);
174 channelValues.fill(0.0);
175 return channelValues;
192template <
class _CSTrait>
KoAlphaColorSpaceFactoryImpl< AlphaU16Traits > KoAlphaU16ColorSpaceFactory
KoID alphaIdFromChannelType< quint16 >()
KoColorSpaceTrait< float, 1, 0 > AlphaF32Traits
KoID alphaIdFromChannelType()
KoID alphaIdFromChannelType< quint8 >()
KoAlphaColorSpaceFactoryImpl< AlphaU8Traits > KoAlphaColorSpaceFactory
KoAlphaColorSpaceFactoryImpl< AlphaF32Traits > KoAlphaF32ColorSpaceFactory
KoColorSpaceTrait< quint8, 1, 0 > AlphaU8Traits
KoAlphaColorSpaceImpl< AlphaF32Traits > KoAlphaF32ColorSpace
KoColorSpaceTrait< quint16, 1, 0 > AlphaU16Traits
KoAlphaColorSpaceImpl< AlphaU8Traits > KoAlphaColorSpace
KoAlphaColorSpaceImpl< AlphaU16Traits > KoAlphaU16ColorSpace
KoID alphaIdFromChannelType< float >()
KoID colorDepthIdForChannelType()
const KoID AlphaColorModelID("A", ki18n("Alpha mask"))
QList< KoColorConversionTransformationFactory * > colorConversionLinks() const override
KoColorSpace * createColorSpace(const KoColorProfile *) const override
_CSTrait::channels_type channels_type
KoAlphaColorSpaceFactoryImpl()
static QString colorSpaceId()
KoID colorDepthId() const override
KoColorSpaceMaths< channels_type > _Maths
KoID colorModelId() const override
KoColorTransformation * createBrightnessContrastAdjustment(const quint16 *transferValues) const override
KoColorTransformation * createPerChannelAdjustment(const quint16 *const *) const override
void colorFromXML(quint8 *, const QDomElement &) const override
void toHSY(const QVector< double > &, qreal *, qreal *, qreal *) const override
KoColorTransformation * createDarkenAdjustment(qint32, bool, qreal) const override
bool hasHighDynamicRange() const override
KoColorSpaceMaths< channels_type, quint8 > _MathsToU8
QVector< double > fromHSY(qreal *, qreal *, qreal *) const override
bool willDegrade(ColorSpaceIndependence independence) const override
QVector< double > fromYUV(qreal *, qreal *, qreal *) const override
_CSTrait::channels_type channels_type
KoColorProfile * m_profile
virtual quint32 colorSpaceType() const
void colorToXML(const quint8 *, QDomDocument &, QDomElement &) const override
bool profileIsCompatible(const KoColorProfile *) const override
virtual void invertColor(quint8 *, qint32) const
KoColorSpaceMaths< quint8, channels_type > _MathsFromU8
const KoColorProfile * profile() const override
quint32 colorChannelCount() const override
void toYUV(const QVector< double > &, qreal *, qreal *, qreal *) const override
QString normalisedChannelValueText(const quint8 *pixel, quint32 channelIndex) const override
QString channelValueText(const quint8 *pixel, quint32 channelIndex) const override
virtual void toRgbA16(const quint8 *src, quint8 *dst, quint32 nPixels) const
virtual QImage convertToQImage(const quint8 *data, qint32 width, qint32 height, const KoColorProfile *dstProfile, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const
virtual quint8 difference(const quint8 *src1, const quint8 *src2) const =0
virtual void toQColor(const quint8 *src, QColor *c) const =0
virtual bool preferCompositionInSourceColorSpace() const
virtual void toLabA16(const quint8 *src, quint8 *dst, quint32 nPixels) const
virtual void fromQColor(const QColor &color, quint8 *dst) const =0
virtual void fromRgbA16(const quint8 *src, quint8 *dst, quint32 nPixels) const
virtual void fromLabA16(const quint8 *src, quint8 *dst, quint32 nPixels) const
virtual quint8 differenceA(const quint8 *src1, const quint8 *src2) const =0
QString id() const override
QString name() const override