Krita Source Code Documentation
Loading...
Searching...
No Matches
LabU8ColorSpace Class Reference

#include <LabU8ColorSpace.h>

+ Inheritance diagram for LabU8ColorSpace:

Public Member Functions

virtual KoColorSpaceclone () const
 
KoID colorDepthId () const override
 
void colorFromXML (quint8 *pixel, const QDomElement &elt) const override
 
KoID colorModelId () const override
 
void colorToXML (const quint8 *pixel, QDomDocument &doc, QDomElement &colorElt) const override
 
void convertChannelToVisualRepresentation (const quint8 *src, quint8 *dst, quint32 nPixels, const QBitArray selectedChannels) const override
 
void convertChannelToVisualRepresentation (const quint8 *src, quint8 *dst, quint32 nPixels, const qint32 selectedChannelIndex) const override
 
QVector< double > fromHSY (qreal *hue, qreal *sat, qreal *luma) const override
 
QVector< double > fromYUV (qreal *y, qreal *u, qreal *v) const override
 
 LabU8ColorSpace (const QString &name, KoColorProfile *p)
 
quint8 scaleToU8 (const quint8 *srcPixel, qint32 channelIndex) const override
 
void toHSY (const QVector< double > &channelValues, qreal *hue, qreal *sat, qreal *luma) const override
 
void toYUV (const QVector< double > &channelValues, qreal *y, qreal *u, qreal *v) const override
 
bool willDegrade (ColorSpaceIndependence independence) const override
 
- Public Member Functions inherited from LcmsColorSpace< KoLabU8Traits >
KoColorTransformationcreateBrightnessContrastAdjustment (const quint16 *transferValues) const override
 
KoColorTransformationcreatePerChannelAdjustment (const quint16 *const *transferValues) const override
 
quint8 difference (const quint8 *src1, const quint8 *src2) const override
 
quint8 differenceA (const quint8 *src1, const quint8 *src2) const override
 
void fromQColor (const QColor &color, quint8 *dst) const override
 
bool hasHighDynamicRange () const override
 
const KoColorProfileprofile () const override
 
bool profileIsCompatible (const KoColorProfile *profile) const override
 
void toQColor (const quint8 *src, QColor *color) const override
 
void toQColor16 (const quint8 *src, QColor *color) const override
 
- Public Member Functions inherited from KoColorSpaceAbstract< _CSTrait >
quint32 alphaPos () const override
 
void applyAlphaNormedFloatMask (quint8 *pixels, const float *alpha, qint32 nPixels) const override
 
void applyAlphaU8Mask (quint8 *pixels, const quint8 *alpha, qint32 nPixels) const override
 
void applyInverseAlphaU8Mask (quint8 *pixels, const quint8 *alpha, qint32 nPixels) const override
 
void applyInverseNormedFloatMask (quint8 *pixels, const float *alpha, qint32 nPixels) const override
 
quint32 channelCount () const override
 
QString channelValueText (const quint8 *pixel, quint32 channelIndex) const override
 
quint32 colorChannelCount () const override
 
void copyOpacityU8 (quint8 *src, quint8 *dst, qint32 nPixels) const override
 
KoColorTransformationcreateDarkenAdjustment (qint32 shade, bool compensate, qreal compensation) const override
 
KoColorTransformationcreateInvertTransformation () const override
 
void fillGrayBrushWithColor (quint8 *dst, const QRgb *brush, quint8 *brushColor, qint32 nPixels) const override
 
void fillInverseAlphaNormedFloatMaskWithColor (quint8 *pixels, const float *alpha, const quint8 *brushColor, qint32 nPixels) const override
 
void fromNormalisedChannelsValue (quint8 *pixel, const QVector< float > &values) const override
 
quint8 intensity8 (const quint8 *src) const override
 
qreal intensityF (const quint8 *src) const override
 
 KoColorSpaceAbstract (const QString &id, const QString &name)
 
void multiplyAlpha (quint8 *pixels, quint8 alpha, qint32 nPixels) const override
 
void normalisedChannelsValue (const quint8 *pixel, QVector< float > &channels) const override
 
QString normalisedChannelValueText (const quint8 *pixel, quint32 channelIndex) const override
 
qreal opacityF (const quint8 *U8_pixel) const override
 
quint8 opacityU8 (const quint8 *U8_pixel) const override
 
quint32 pixelSize () const override
 
void setOpacity (quint8 *pixels, qreal alpha, qint32 nPixels) const override
 
void setOpacity (quint8 *pixels, quint8 alpha, qint32 nPixels) const override
 
void singleChannelPixel (quint8 *dstPixel, const quint8 *srcPixel, quint32 channelIndex) const override
 
- Public Member Functions inherited from KoColorSpace
virtual void addCompositeOp (const KoCompositeOp *op)
 
virtual void addDitherOp (KisDitherOp *op)
 
virtual void bitBlt (const KoColorSpace *srcSpace, const KoCompositeOp::ParameterInfo &params, const KoCompositeOp *op, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const
 
QBitArray channelFlags (bool color=true, bool alpha=false) const
 
QList< KoChannelInfo * > channels () const
 
const KoCompositeOpcompositeOp (const QString &id, const KoColorSpace *srcSpace=nullptr) const
 
virtual QList< KoCompositeOp * > compositeOps () const
 
virtual bool convertPixelsTo (const quint8 *src, quint8 *dst, const KoColorSpace *dstColorSpace, quint32 numPixels, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const
 
virtual QImage convertToQImage (const quint8 *data, qint32 width, qint32 height, const KoColorProfile *dstProfile, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const
 
virtual KoConvolutionOpconvolutionOp () const
 
virtual KoColorConversionTransformationcreateColorConverter (const KoColorSpace *dstColorSpace, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const
 
KoColorTransformationcreateColorTransformation (const QString &id, const QHash< QString, QVariant > &parameters) const
 
virtual KoColorConversionTransformationcreateProofingTransform (const KoColorSpace *dstColorSpace, const KoColorSpace *proofingSpace, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::Intent proofingIntent, bool bpcFirstTransform, quint8 *gamutWarning, KoColorConversionTransformation::ConversionFlags displayConversionFlags) const
 createProofingTransform Create a proofing transform. This is a two part transform that can also do gamut checks. The first transform is from source -> proofing space. Here the gamut checks are performed. The second is the proofing to destination space.
 
virtual void decreaseHue (quint8 *pixel, qreal step) const
 
virtual void decreaseLuminosity (quint8 *pixel, qreal step) const
 
virtual void decreaseSaturation (quint8 *pixel, qreal step) const
 
virtual const KisDitherOpditherOp (const QString &depth, DitherType type) const
 
QPolygonF estimatedTRCXYY () const
 
virtual void fillGrayBrushWithColorAndLightnessOverlay (quint8 *dst, const QRgb *brush, quint8 *brushColor, qint32 nPixels) const
 
virtual void fillGrayBrushWithColorAndLightnessWithStrength (quint8 *dst, const QRgb *brush, quint8 *brushColor, qreal strength, qint32 nPixels) const
 
virtual void fromLabA16 (const quint8 *src, quint8 *dst, quint32 nPixels) const
 
virtual void fromRgbA16 (const quint8 *src, quint8 *dst, quint32 nPixels) const
 
QPolygonF gamutXYY () const
 
virtual bool hasCompositeOp (const QString &id, const KoColorSpace *srcSpace=nullptr) const
 
QString id () const
 
virtual void increaseBlue (quint8 *pixel, qreal step) const
 
virtual void increaseGreen (quint8 *pixel, qreal step) const
 
virtual void increaseHue (quint8 *pixel, qreal step) const
 
virtual void increaseLuminosity (quint8 *pixel, qreal step) const
 
virtual void increaseRed (quint8 *pixel, qreal step) const
 
virtual void increaseSaturation (quint8 *pixel, qreal step) const
 
virtual void increaseYellow (quint8 *pixel, qreal step) const
 
 KoColorSpace (const QString &id, const QString &name, KoMixColorsOp *mixColorsOp, KoConvolutionOp *convolutionOp)
 Should be called by real color spaces.
 
QVector< qreal > lumaCoefficients () const
 
virtual KoMixColorsOpmixColorsOp () const
 
virtual void modulateLightnessByGrayBrush (quint8 *dst, const QRgb *brush, qreal strength, qint32 nPixels) const
 
QString name () const
 
virtual bool operator== (const KoColorSpace &rhs) const
 
virtual bool proofPixelsTo (const quint8 *src, quint8 *dst, quint32 numPixels, KoColorConversionTransformation *proofingTransform) const
 proofPixelsTo
 
virtual void toLabA16 (const quint8 *src, quint8 *dst, quint32 nPixels) const
 
virtual void toRgbA16 (const quint8 *src, quint8 *dst, quint32 nPixels) const
 
virtual void transparentColor (quint8 *dst, quint32 nPixels) const
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KoLcmsInfo
virtual cmsColorSpaceSignature colorSpaceSignature () const
 
virtual quint32 colorSpaceType () const
 
 KoLcmsInfo (cmsUInt32Number cmType, cmsColorSpaceSignature colorSpaceSignature)
 
virtual ~KoLcmsInfo ()
 

Static Public Member Functions

static QString colorSpaceId ()
 

Additional Inherited Members

- Public Types inherited from KoColorSpaceAbstract< _CSTrait >
typedef _CSTrait ColorSpaceTraits
 
- Public Attributes inherited from KoColorSpace
ThreadLocalCache channelFlagsApplicationCache
 
QList< KoChannelInfo * > channels
 
QVector< qreal > colorants
 
QHash< QString, KoCompositeOp * > compositeOps
 
ThreadLocalCache conversionCache
 
KoConvolutionOpconvolutionOp
 
Deletability deletability
 
QHash< QString, QMap< DitherType, KisDitherOp * > > ditherOps
 
QPolygonF gamutXYY
 
KoColorSpaceEngineiccEngine
 
QString id
 
quint32 idNumber
 
QVector< qreal > lumaCoefficients
 
KoMixColorsOpmixColorsOp
 
QString name
 
KoColorConversionTransformationtransfoFromLABA16
 
KoColorConversionTransformationtransfoFromRGBA16
 
KoColorConversionTransformationtransfoToLABA16
 
KoColorConversionTransformationtransfoToRGBA16
 
QPolygonF TRCXYY
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 
- Protected Member Functions inherited from LcmsColorSpace< KoLabU8Traits >
void init ()
 
 LcmsColorSpace (const QString &id, const QString &name, cmsUInt32Number cmType, cmsColorSpaceSignature colorSpaceSignature, KoColorProfile *p)
 
 ~LcmsColorSpace () override
 
- Protected Member Functions inherited from KoColorSpace
virtual void addChannel (KoChannelInfo *ci)
 
const KoColorConversionTransformationfromLabA16Converter () const
 
const KoColorConversionTransformationfromRgbA16Converter () const
 
 KoColorSpace ()
 Only for use by classes that serve as baseclass for real color spaces.
 
virtual bool preferCompositionInSourceColorSpace () const
 
const KoColorConversionTransformationtoLabA16Converter () const
 
const KoColorConversionTransformationtoRgbA16Converter () const
 
virtual ~KoColorSpace ()
 
- Protected Attributes inherited from KoColorSpace
Private *const d
 

Detailed Description

Definition at line 17 of file LabU8ColorSpace.h.

Constructor & Destructor Documentation

◆ LabU8ColorSpace()

LabU8ColorSpace::LabU8ColorSpace ( const QString & name,
KoColorProfile * p )

Definition at line 19 of file LabU8ColorSpace.cpp.

19 :
21{
22 addChannel(new KoChannelInfo(i18nc("Lightness value in Lab color model", "Lightness"), 0 * sizeof(quint8), 0, KoChannelInfo::COLOR, KoChannelInfo::UINT8, sizeof(quint8), QColor(100, 100, 100)));
23 addChannel(new KoChannelInfo(i18n("a*"), 1 * sizeof(quint8), 1, KoChannelInfo::COLOR, KoChannelInfo::UINT8, sizeof(quint8), QColor(150, 150, 150)));
24 addChannel(new KoChannelInfo(i18n("b*"), 2 * sizeof(quint8), 2, KoChannelInfo::COLOR, KoChannelInfo::UINT8, sizeof(quint8), QColor(200, 200, 200)));
25 addChannel(new KoChannelInfo(i18n("Alpha"), 3 * sizeof(quint8), 3, KoChannelInfo::ALPHA, KoChannelInfo::UINT8, sizeof(quint8)));
26 init();
27 addStandardCompositeOps<KoLabU8Traits>(this);
28 addStandardDitherOps<KoLabU8Traits>(this);
29}
const Params2D p
#define TYPE_LABA_8
@ ALPHA
The channel represents the opacity of a pixel.
@ COLOR
The channel represents a color.
@ UINT8
use this for an unsigned integer 8bits channel
virtual void addChannel(KoChannelInfo *ci)
static QString colorSpaceId()

References KoColorSpace::addChannel(), KoChannelInfo::ALPHA, KoChannelInfo::COLOR, LcmsColorSpace< KoLabU8Traits >::init(), and KoChannelInfo::UINT8.

Member Function Documentation

◆ clone()

KoColorSpace * LabU8ColorSpace::clone ( ) const
virtual

Definition at line 36 of file LabU8ColorSpace.cpp.

37{
38 return new LabU8ColorSpace(name(), profile()->clone());
39}
virtual KoColorSpace * clone() const
LabU8ColorSpace(const QString &name, KoColorProfile *p)
const KoColorProfile * profile() const override

References clone(), LabU8ColorSpace(), KoColorSpace::name, and LcmsColorSpace< KoLabU8Traits >::profile().

◆ colorDepthId()

KoID LabU8ColorSpace::colorDepthId ( ) const
inlineoverridevirtual
Returns
a string that identify the bit depth (for instance "U8" or "F16" ...)
See also
KoColorModelStandardIds.h

Implements KoColorSpace.

Definition at line 33 of file LabU8ColorSpace.h.

34 {
36 }
const KoID Integer8BitsColorDepthID("U8", ki18n("8-bit integer/channel"))

References Integer8BitsColorDepthID.

◆ colorFromXML()

void LabU8ColorSpace::colorFromXML ( quint8 * pixel,
const QDomElement & elt ) const
overridevirtual

Unserialize a color following Create's swatch color specification available at https://web.archive.org/web/20110826002520/http://create.freedesktop.org/wiki/Swatches_-_color_file_format/Draft

Parameters
pixelbuffer where the color will be unserialized
eltthe element to unserialize (<CMYK />, <sRGB />, <RGB />)
Returns
the unserialize color, or an empty color object if the function failed to unserialize the color

Implements KoColorSpace.

Definition at line 72 of file LabU8ColorSpace.cpp.

73{
74 KoLabU8Traits::Pixel *p = reinterpret_cast<KoLabU8Traits::Pixel *>(pixel);
75
76 double a = KisDomUtils::toDouble(elt.attribute("a"));
77 double b = KisDomUtils::toDouble(elt.attribute("b"));
78
79 // L will go from 0 to 100
80
82
84
85 // a goes from -128 to 127
86 if(a <= 0) {
87 a = (a/-128.0);
88 p->a = halfValue - (a * halfValue);
89 } else {
90 a = fabs(a/127.0);
91 p->a = (a * halfValue) + halfValue;
92 }
93
94 if(b <= 0) {
95 b = (b/-128.0);
96 p->b = halfValue - (b * halfValue);
97 } else {
98 b = fabs(b/127.0);
99 p->b = (b * halfValue) + halfValue;
100 }
101
103}
static _Tdst scaleToA(_T a)
double toDouble(const QString &str, bool *ok=nullptr)
_channels_type_ channels_type
the type of the value of the channels of this color space

References p, KoColorSpaceMaths< _T, _Tdst >::scaleToA(), and KisDomUtils::toDouble().

◆ colorModelId()

KoID LabU8ColorSpace::colorModelId ( ) const
inlineoverridevirtual
Returns
a string that identify the color model (for instance "RGB" or "CMYK" ...)
See also
KoColorModelStandardIds.h

Implements KoColorSpace.

Definition at line 28 of file LabU8ColorSpace.h.

29 {
30 return LABAColorModelID;
31 }
const KoID LABAColorModelID("LABA", ki18n("L*a*b*/Alpha"))

References LABAColorModelID.

◆ colorSpaceId()

static QString LabU8ColorSpace::colorSpaceId ( )
inlinestatic

Definition at line 23 of file LabU8ColorSpace.h.

24 {
25 return QStringLiteral("LABAU8");
26 }

◆ colorToXML()

void LabU8ColorSpace::colorToXML ( const quint8 * pixel,
QDomDocument & doc,
QDomElement & colorElt ) const
overridevirtual

Serialize this color following Create's swatch color specification available at https://web.archive.org/web/20110826002520/http://create.freedesktop.org/wiki/Swatches_-_color_file_format/Draft

This function doesn't create the <color /> element but rather the <CMYK />, <sRGB />, <RGB /> ... elements. It is assumed that colorElt is the <color /> element.

Parameters
pixelbuffer to serialized
colorEltroot element for the serialization, it is assumed that this element is <color />
docis the document containing colorElt

Implements KoColorSpace.

Definition at line 41 of file LabU8ColorSpace.cpp.

42{
43 const KoLabU8Traits::Pixel *p = reinterpret_cast<const KoLabU8Traits::Pixel *>(pixel);
44 QDomElement labElt = doc.createElement("Lab");
45
46 double a, b;
48
49 if (p->a <= halfValue) {
50 a = double(double(halfValue - p->a) / halfValue);
51 a = a * -128.0;
52 } else {
53 a = double(double(p->a - halfValue) / halfValue);
54 a = 127.0 * a;
55 }
56
57 if (p->b <= halfValue) {
58 b = double(double(halfValue - p->b) / halfValue);
59 b = b * -128.0;
60 } else {
61 b = double(double(p->b - halfValue) / halfValue);
62 b = 127.0 * b;
63 }
64
66 labElt.setAttribute("a", KisDomUtils::toString(a));
67 labElt.setAttribute("b", KisDomUtils::toString(b));
68 labElt.setAttribute("space", profile()->name());
69 colorElt.appendChild(labElt);
70}
QString toString(const QString &value)

References KoColorSpace::name, p, LcmsColorSpace< KoLabU8Traits >::profile(), and KisDomUtils::toString().

◆ convertChannelToVisualRepresentation() [1/2]

void LabU8ColorSpace::convertChannelToVisualRepresentation ( const quint8 * src,
quint8 * dst,
quint32 nPixels,
const QBitArray selectedChannels ) const
overridevirtual

Convert nPixels pixels in src into their human-visible visual representation. The channels are shown as if other channels were null (or, if Lab, L = 1.0, *a = *b = 0.0).

Both buffers are in the same color space.

Parameters
srcsource buffer in (*this) color space
dstdestination buffer in the same color space as src
nPixelslength of the buffers in number of pixels
pixelSizestride of each pixel in the destination buffer
selectedChannelsBitmap of selected channels

Reimplemented from KoColorSpaceAbstract< _CSTrait >.

Definition at line 194 of file LabU8ColorSpace.cpp.

195{
196 for (uint pixelIndex = 0; pixelIndex < nPixels; ++pixelIndex) {
197 for (uint channelIndex = 0; channelIndex < ColorSpaceTraits::channels_nb; ++channelIndex) {
198 if (selectedChannels.testBit(channelIndex)) {
199 ColorSpaceTraits::nativeArray((dst + (pixelIndex * ColorSpaceTraits::pixelSize)))[channelIndex] =
200 ColorSpaceTraits::nativeArray((src + (pixelIndex * ColorSpaceTraits::pixelSize)))[channelIndex];
201 } else {
202 ColorSpaceTraits::channels_type v;
203 switch (channelIndex) {
204 case ColorSpaceTraits::L_pos:
205 v = ColorSpaceTraits::math_trait::halfValueL;
206 break;
207 case ColorSpaceTraits::a_pos:
208 case ColorSpaceTraits::b_pos:
209 v = ColorSpaceTraits::math_trait::halfValueAB;
210 break;
211 default:
212 v = ColorSpaceTraits::math_trait::zeroValue;
213 break;
214 }
215 ColorSpaceTraits::nativeArray((dst + (pixelIndex * ColorSpaceTraits::pixelSize)))[channelIndex] = v;
216 }
217 }
218 }
219}
qreal v
unsigned int uint

References v.

◆ convertChannelToVisualRepresentation() [2/2]

void LabU8ColorSpace::convertChannelToVisualRepresentation ( const quint8 * src,
quint8 * dst,
quint32 nPixels,
const qint32 selectedChannelIndex ) const
overridevirtual

Convert nPixels pixels in src into their human-visible visual representation. The channel is shown as grayscale.

Both buffers are in the same color space.

Parameters
srcsource buffer in (*this) color space
dstdestination buffer in the same color space as src
nPixelslength of the buffers in number of pixels
pixelSizestride of each pixel in the destination buffer
selectedChannelIndexIndex of the selected channel.

Reimplemented from KoColorSpaceAbstract< _CSTrait >.

Definition at line 159 of file LabU8ColorSpace.cpp.

160{
161 for (uint pixelIndex = 0; pixelIndex < nPixels; ++pixelIndex) {
162 for (uint channelIndex = 0; channelIndex < ColorSpaceTraits::channels_nb; ++channelIndex) {
163 if (channelIndex != ColorSpaceTraits::alpha_pos) {
164 if (channelIndex == ColorSpaceTraits::L_pos) {
165 ColorSpaceTraits::channels_type c = ColorSpaceTraits::nativeArray((src + (pixelIndex * ColorSpaceTraits::pixelSize)))[selectedChannelIndex];
166 switch (selectedChannelIndex) {
167 case ColorSpaceTraits::L_pos:
168 break;
169 case ColorSpaceTraits::a_pos:
170 case ColorSpaceTraits::b_pos:
171 if (c <= ColorSpaceTraits::math_trait::halfValueAB) {
172 c = ColorSpaceTraits::math_trait::unitValueL * (((qreal)c - ColorSpaceTraits::math_trait::zeroValueAB) / (2.0 * (ColorSpaceTraits::math_trait::halfValueAB - ColorSpaceTraits::math_trait::zeroValueAB)));
173 } else {
174 c = ColorSpaceTraits::math_trait::unitValueL * (0.5 + ((qreal)c - ColorSpaceTraits::math_trait::halfValueAB) / (2.0 * (ColorSpaceTraits::math_trait::unitValueAB - ColorSpaceTraits::math_trait::halfValueAB)));
175 }
176 break;
177 // As per KoChannelInfo alpha channels are [0..1]
178 default:
179 c = ColorSpaceTraits::math_trait::unitValueL * (qreal)c / ColorSpaceTraits::math_trait::unitValue;
180 break;
181 }
182 ColorSpaceTraits::nativeArray(dst + (pixelIndex * ColorSpaceTraits::pixelSize))[channelIndex] = c;
183 } else {
184 ColorSpaceTraits::nativeArray(dst + (pixelIndex * ColorSpaceTraits::pixelSize))[channelIndex] = ColorSpaceTraits::math_trait::halfValueAB;
185 }
186 } else {
187 ColorSpaceTraits::nativeArray((dst + (pixelIndex * ColorSpaceTraits::pixelSize)))[channelIndex] =
188 ColorSpaceTraits::nativeArray((src + (pixelIndex * ColorSpaceTraits::pixelSize)))[channelIndex];
189 }
190 }
191 }
192}

◆ fromHSY()

QVector< double > LabU8ColorSpace::fromHSY ( qreal * hue,
qreal * sat,
qreal * luma ) const
overridevirtual

Implements KoColorSpace.

Definition at line 110 of file LabU8ColorSpace.cpp.

111{
112 QVector <double> channelValues(4);
113 LCHToLab(*luma, *sat, *hue, &channelValues[0],&channelValues[1],&channelValues[2]);
114 channelValues[3]=1.0;
115 return channelValues;
116}
void LCHToLab(const qreal L, const qreal C, const qreal H, qreal *l, qreal *a, qreal *b)

References LCHToLab().

◆ fromYUV()

QVector< double > LabU8ColorSpace::fromYUV ( qreal * y,
qreal * u,
qreal * v ) const
overridevirtual

Implements KoColorSpace.

Definition at line 125 of file LabU8ColorSpace.cpp.

126{
127 QVector <double> channelValues(4);
128 channelValues[0]=*y;
129 channelValues[1]=*u;
130 channelValues[2]=*v;
131 channelValues[3]=1.0;
132 return channelValues;
133}
qreal u

References u, and v.

◆ scaleToU8()

quint8 LabU8ColorSpace::scaleToU8 ( const quint8 * srcPixel,
qint32 channelPos ) const
overridevirtual

Convert the value of the channel at the specified position into an 8-bit value. The position is not the number of bytes, but the position of the channel as defined in the channel info list.

Reimplemented from KoColorSpaceAbstract< _CSTrait >.

Definition at line 135 of file LabU8ColorSpace.cpp.

136{
137 typename ColorSpaceTraits::channels_type c = ColorSpaceTraits::nativeArray(srcPixel)[channelIndex];
138 qreal b = 0;
139 switch (channelIndex) {
140 case ColorSpaceTraits::L_pos:
141 b = ((qreal)c) / ColorSpaceTraits::math_trait::unitValueL;
142 break;
143 case ColorSpaceTraits::a_pos:
144 case ColorSpaceTraits::b_pos:
145 if (c <= ColorSpaceTraits::math_trait::halfValueAB) {
146 b = ((qreal)c - ColorSpaceTraits::math_trait::zeroValueAB) / (2.0 * (ColorSpaceTraits::math_trait::halfValueAB - ColorSpaceTraits::math_trait::zeroValueAB));
147 } else {
148 b = 0.5 + ((qreal)c - ColorSpaceTraits::math_trait::halfValueAB) / (2.0 * (ColorSpaceTraits::math_trait::unitValueAB - ColorSpaceTraits::math_trait::halfValueAB));
149 }
150 break;
151 default:
152 b = ((qreal)c) / ColorSpaceTraits::math_trait::unitValue;
153 break;
154 }
155
157}

References KoColorSpaceMaths< _T, _Tdst >::scaleToA().

◆ toHSY()

void LabU8ColorSpace::toHSY ( const QVector< double > & channelValues,
qreal * hue,
qreal * sat,
qreal * luma ) const
overridevirtual

Implements KoColorSpace.

Definition at line 105 of file LabU8ColorSpace.cpp.

106{
107 LabToLCH(channelValues[0],channelValues[1],channelValues[2], luma, sat, hue);
108}
void LabToLCH(const qreal l, const qreal a, const qreal b, qreal *L, qreal *C, qreal *H)

References LabToLCH().

◆ toYUV()

void LabU8ColorSpace::toYUV ( const QVector< double > & channelValues,
qreal * y,
qreal * u,
qreal * v ) const
overridevirtual

Implements KoColorSpace.

Definition at line 118 of file LabU8ColorSpace.cpp.

119{
120 *y =channelValues[0];
121 *u=channelValues[1];
122 *v=channelValues[2];
123}

References u, and v.

◆ willDegrade()

bool LabU8ColorSpace::willDegrade ( ColorSpaceIndependence independence) const
overridevirtual

If false, images in this colorspace will degrade considerably by functions, tools and filters that have the given measure of colorspace independence.

Parameters
independencethe measure to which this colorspace will suffer from the manipulations of the tool or filter asking
Returns
false if no degradation will take place, true if degradation will take place

Implements KoColorSpace.

Definition at line 31 of file LabU8ColorSpace.cpp.

32{
33 return false;
34}

The documentation for this class was generated from the following files: