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

#include <KoRgbU8ColorSpace.h>

+ Inheritance diagram for KoRgbU8ColorSpace:

Public Member Functions

virtual KoColorSpaceclone () const
 
void fillGrayBrushWithColorAndLightnessOverlay (quint8 *dst, const QRgb *brush, quint8 *brushColor, qint32 nPixels) const override
 
void fillGrayBrushWithColorAndLightnessWithStrength (quint8 *dst, const QRgb *brush, quint8 *brushColor, qreal strength, qint32 nPixels) const override
 
QVector< double > fromHSY (qreal *hue, qreal *sat, qreal *luma) const override
 
void fromQColor (const QColor &color, quint8 *dst) const override
 
QVector< double > fromYUV (qreal *y, qreal *u, qreal *v) const override
 
 KoRgbU8ColorSpace ()
 
void modulateLightnessByGrayBrush (quint8 *dst, const QRgb *brush, qreal strength, qint32 nPixels) const override
 
void toHSY (const QVector< double > &channelValues, qreal *hue, qreal *sat, qreal *luma) const override
 
void toQColor (const quint8 *src, QColor *c) const override
 
void toYUV (const QVector< double > &channelValues, qreal *y, qreal *u, qreal *v) const override
 
 ~KoRgbU8ColorSpace () override
 
- Public Member Functions inherited from KoSimpleColorSpace< KoBgrU8Traits >
KoID colorDepthId () const override
 
void colorFromXML (quint8 *, const QDomElement &) const override
 
KoID colorModelId () const override
 
virtual QString colorSpaceEngine () const
 
virtual quint32 colorSpaceType () const
 
void colorToXML (const quint8 *, QDomDocument &, QDomElement &) const override
 
bool convertPixelsTo (const quint8 *src, quint8 *dst, const KoColorSpace *dstColorSpace, quint32 numPixels, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const override
 
KoColorTransformationcreateBrightnessContrastAdjustment (const quint16 *) const override
 
KoColorTransformationcreateDarkenAdjustment (qint32, bool, qreal) const override
 
virtual KoColorTransformationcreateDesaturateAdjustment () const
 
KoColorTransformationcreatePerChannelAdjustment (const quint16 *const *) const override
 
quint8 difference (const quint8 *src1, const quint8 *src2) const override
 
quint8 differenceA (const quint8 *src1, const quint8 *src2) const override
 
QVector< double > fromHSY (qreal *, qreal *, qreal *) const override
 
void fromLabA16 (const quint8 *src, quint8 *dst, quint32 nPixels) const override
 
void fromRgbA16 (const quint8 *src, quint8 *dst, quint32 nPixels) const override
 
QVector< double > fromYUV (qreal *, qreal *, qreal *) const override
 
bool hasHighDynamicRange () const override
 
virtual void invertColor (quint8 *, qint32) const
 
 KoSimpleColorSpace (const QString &id, const QString &name, const KoID &colorModelId, const KoID &colorDepthId)
 
const KoColorProfileprofile () const override
 
bool profileIsCompatible (const KoColorProfile *) const override
 
void toHSY (const QVector< double > &, qreal *, qreal *, qreal *) const override
 
void toLabA16 (const quint8 *src, quint8 *dst, quint32 nPixels) const override
 
void toRgbA16 (const quint8 *src, quint8 *dst, quint32 nPixels) const override
 
void toYUV (const QVector< double > &, qreal *, qreal *, qreal *) const override
 
bool willDegrade (ColorSpaceIndependence independence) const override
 
 ~KoSimpleColorSpace () 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 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
 
void copyOpacityU8 (quint8 *src, quint8 *dst, qint32 nPixels) 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
 
quint8 scaleToU8 (const quint8 *srcPixel, qint32 channelIndex) 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
 
void toQColor16 (const quint8 *src, QColor *c) 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 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
 
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
 
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 transparentColor (quint8 *dst, quint32 nPixels) const
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 

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 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

The alpha mask is a special color strategy that treats all pixels as alpha value with a color common to the mask. The default color is white.

Definition at line 22 of file KoRgbU8ColorSpace.h.

Constructor & Destructor Documentation

◆ KoRgbU8ColorSpace()

KoRgbU8ColorSpace::KoRgbU8ColorSpace ( )

Definition at line 25 of file KoRgbU8ColorSpace.cpp.

25 :
26
28 i18n("RGB (8-bit integer/channel, unmanaged)"),
31{
32
33 addChannel(new KoChannelInfo(i18n("Blue"), 0, 2, KoChannelInfo::COLOR, KoChannelInfo::UINT8, 1, QColor(0, 0, 255)));
34 addChannel(new KoChannelInfo(i18n("Green"), 1, 1, KoChannelInfo::COLOR, KoChannelInfo::UINT8, 1, QColor(0, 255, 0)));
35 addChannel(new KoChannelInfo(i18n("Red"), 2, 0, KoChannelInfo::COLOR, KoChannelInfo::UINT8, 1, QColor(255, 0, 0)));
37
38 // ADD, ALPHA_DARKEN, BURN, DIVIDE, DODGE, ERASE, MULTIPLY, OVER, OVERLAY, SCREEN, SUBTRACT
39 addStandardCompositeOps<KoBgrU8Traits>(this);
40 addStandardDitherOps<KoBgrU8Traits>(this);
41}
const KoID Integer8BitsColorDepthID("U8", ki18n("8-bit integer/channel"))
const KoID RGBAColorModelID("RGBA", ki18n("RGB/Alpha"))
@ 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, and KoChannelInfo::UINT8.

◆ ~KoRgbU8ColorSpace()

KoRgbU8ColorSpace::~KoRgbU8ColorSpace ( )
override

Definition at line 43 of file KoRgbU8ColorSpace.cpp.

44{
45}

Member Function Documentation

◆ clone()

KoColorSpace * KoRgbU8ColorSpace::clone ( ) const
virtual

Definition at line 54 of file KoRgbU8ColorSpace.cpp.

55{
56 return new KoRgbU8ColorSpace();
57}

References KoRgbU8ColorSpace().

◆ colorSpaceId()

QString KoRgbU8ColorSpace::colorSpaceId ( )
static

Definition at line 48 of file KoRgbU8ColorSpace.cpp.

49{
50 return QStringLiteral("RGBA");
51}

◆ fillGrayBrushWithColorAndLightnessOverlay()

void KoRgbU8ColorSpace::fillGrayBrushWithColorAndLightnessOverlay ( quint8 * dst,
const QRgb * brush,
quint8 * brushColor,
qint32 nPixels ) const
overridevirtual

Fills dst with specified brushColor and then applies inverted brush mask specified in brush. Inverted red channel of the brush is used as lightness of the destination. Alpha channel of the brush is used as alpha of the destination.

The equation is:

dstL_hsl = preserveLightness(colorL_hsl, lightFactor);
dstA = qAlpha(brush);

For details on preserveLightness() formula, see KoColorSpacePreserveLightnessUtils.h

Reimplemented from KoColorSpace.

Definition at line 101 of file KoRgbU8ColorSpace.cpp.

102{
103 fillGrayBrushWithColorPreserveLightnessRGB<KoBgrU8Traits>(dst, brush, brushColor, 1.0, nPixels);
104}

◆ fillGrayBrushWithColorAndLightnessWithStrength()

void KoRgbU8ColorSpace::fillGrayBrushWithColorAndLightnessWithStrength ( quint8 * dst,
const QRgb * brush,
quint8 * brushColor,
qreal strength,
qint32 nPixels ) const
overridevirtual

Reimplemented from KoColorSpace.

Definition at line 106 of file KoRgbU8ColorSpace.cpp.

107{
108 fillGrayBrushWithColorPreserveLightnessRGB<KoBgrU8Traits>(dst, brush, brushColor, strength, nPixels);
109}

◆ fromHSY()

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

Implements KoColorSpace.

Definition at line 80 of file KoRgbU8ColorSpace.cpp.

81{
82 QVector <double> channelValues(4);
83 HSYToRGB(*hue, *sat, *luma, &channelValues[0],&channelValues[1],&channelValues[2]);
84 channelValues[3]=1.0;
85 return channelValues;
86}
void HSYToRGB(const qreal h, const qreal s, const qreal y, qreal *red, qreal *green, qreal *blue, qreal R, qreal G, qreal B)

References HSYToRGB().

◆ fromQColor()

void KoRgbU8ColorSpace::fromQColor ( const QColor & color,
quint8 * dst ) const
overridevirtual

The fromQColor methods take a given color defined as an RGB QColor and fills a byte array with the corresponding color in the the colorspace managed by this strategy.

Parameters
colorthe QColor that will be used to fill dst
dsta pointer to a pixel

Implements KoColorSpace.

Definition at line 60 of file KoRgbU8ColorSpace.cpp.

61{
62 QVector<float> channelValues;
63 channelValues << c.blueF() << c.greenF() << c.redF() << c.alphaF();
64 fromNormalisedChannelsValue(dst, channelValues);
65}
void fromNormalisedChannelsValue(quint8 *pixel, const QVector< float > &values) const override

References KoColorSpaceAbstract< _CSTrait >::fromNormalisedChannelsValue().

◆ fromYUV()

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

Implements KoColorSpace.

Definition at line 93 of file KoRgbU8ColorSpace.cpp.

94{
95 QVector <double> channelValues(4);
96 YUVToRGB(*y, *u, *v, &channelValues[0],&channelValues[1],&channelValues[2]);
97 channelValues[3]=1.0;
98 return channelValues;
99}
qreal v
qreal u
void YUVToRGB(const qreal y, const qreal u, const qreal v, qreal *r, qreal *g, qreal *b, qreal R, qreal G, qreal B)

References u, v, and YUVToRGB().

◆ modulateLightnessByGrayBrush()

void KoRgbU8ColorSpace::modulateLightnessByGrayBrush ( quint8 * dst,
const QRgb * brush,
qreal strength,
qint32 nPixels ) const
overridevirtual

Reimplemented from KoColorSpace.

Definition at line 111 of file KoRgbU8ColorSpace.cpp.

112{
113 modulateLightnessByGrayBrushRGB<KoBgrU8Traits>(dst, brush, strength, nPixels);
114}

◆ toHSY()

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

Implements KoColorSpace.

Definition at line 74 of file KoRgbU8ColorSpace.cpp.

75{
76
77 RGBToHSY(channelValues[0],channelValues[1],channelValues[2], hue, sat, luma);
78}
void RGBToHSY(const qreal r, const qreal g, const qreal b, qreal *h, qreal *s, qreal *y, qreal R, qreal G, qreal B)

References RGBToHSY().

◆ toQColor()

void KoRgbU8ColorSpace::toQColor ( const quint8 * src,
QColor * c ) const
overridevirtual

The toQColor methods take a byte array that is at least pixelSize() long and converts the contents to a QColor, using the given profile as a source profile and the optional profile as a destination profile.

Parameters
srca pointer to the source pixel
cthe QColor that will be filled with the color at src

Implements KoColorSpace.

Definition at line 67 of file KoRgbU8ColorSpace.cpp.

68{
69 QVector<float> channelValues(4);
70 normalisedChannelsValue(src, channelValues);
71 c->setRgbF(channelValues[2], channelValues[1], channelValues[0], channelValues[3]);
72}
void normalisedChannelsValue(const quint8 *pixel, QVector< float > &channels) const override

References KoColorSpaceAbstract< _CSTrait >::normalisedChannelsValue().

◆ toYUV()

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

Implements KoColorSpace.

Definition at line 88 of file KoRgbU8ColorSpace.cpp.

89{
90 RGBToYUV(channelValues[0],channelValues[1],channelValues[2], y, u, v);
91}
void RGBToYUV(const qreal r, const qreal g, const qreal b, qreal *y, qreal *u, qreal *v, qreal R, qreal G, qreal B)

References RGBToYUV(), u, and v.


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