Represents a 32-bit INTERNAL pixel with premultiplied alpha, and can perform compositing operations with it.
This is used internally by the imaging classes.
Public Types | |
| enum | { indexA = 3 , indexR = 0 , indexG = 1 , indexB = 2 } |
| The indexes of the different components in the byte layout of this type of colour. More... | |
Public Member Functions | |
| PixelARGB () noexcept=default | |
| Creates a pixel without defining its colour. | |
| forcedinline constexpr | PixelARGB (uint8 a, uint8 r, uint8 g, uint8 b) noexcept |
| Creates a pixel. | |
| forcedinline constexpr uint32 | getNativeARGB () const noexcept |
| Returns a uint32 which represents the pixel in a platform dependent format. | |
| forcedinline constexpr uint32 | getInARGBMaskOrder () const noexcept |
| Returns a uint32 which will be in argb order as if constructed with the following mask operation ((alpha << 24) | (red << 16) | (green << 8) | blue). | |
| forcedinline constexpr uint32 | getInARGBMemoryOrder () const noexcept |
| Returns a uint32 which when written to memory, will be in the order a, r, g, b. | |
| forcedinline constexpr uint32 | getEvenBytes () const noexcept |
| Return channels with an even index and insert zero bytes between them. | |
| forcedinline constexpr uint32 | getOddBytes () const noexcept |
| Return channels with an odd index and insert zero bytes between them. | |
| forcedinline constexpr uint8 | getAlpha () const noexcept |
| forcedinline constexpr uint8 | getRed () const noexcept |
| forcedinline constexpr uint8 | getGreen () const noexcept |
| forcedinline constexpr uint8 | getBlue () const noexcept |
| template<class Pixel> | |
| forcedinline constexpr void | set (Pixel src) noexcept |
| Copies another pixel colour over this one. | |
| forcedinline constexpr void | setARGB (uint8 a, uint8 r, uint8 g, uint8 b) noexcept |
| Sets the pixel's colour from individual components. | |
| template<class Pixel> | |
| forcedinline constexpr void | blend (Pixel src, BlendMode mode) noexcept |
| Blends another pixel onto this one using the specified blend mode. | |
| template<class Pixel> | |
| forcedinline constexpr void | blend (Pixel src) noexcept |
| Blends another pixel onto this one. | |
| forcedinline constexpr void | blend (PixelRGB src) noexcept |
| Blends another pixel onto this one. | |
| template<class Pixel> | |
| forcedinline constexpr void | blend (Pixel src, BlendMode mode, uint32 extraAlpha) noexcept |
| Blends another pixel onto this one, applying an extra multiplier to its opacity. | |
| template<class Pixel> | |
| forcedinline constexpr void | blend (Pixel src, uint32 extraAlpha) noexcept |
| template<class Pixel> | |
| forcedinline constexpr void | tween (Pixel src, uint32 amount) noexcept |
| Blends another pixel with this one, creating a colour that is somewhere between the two, as specified by the amount. | |
| forcedinline constexpr void | setAlpha (uint8 newAlpha) noexcept |
| Replaces the colour's alpha value with another one. | |
| forcedinline constexpr void | multiplyAlpha (int multiplier) noexcept |
| Multiplies the colour's alpha value with another one. | |
| forcedinline constexpr void | multiplyAlpha (float multiplier) noexcept |
| forcedinline constexpr PixelARGB | getUnpremultiplied () const noexcept |
| forcedinline constexpr void | premultiply () noexcept |
| Premultiplies the pixel's RGB values by its alpha. | |
| forcedinline constexpr void | unpremultiply () noexcept |
| Unpremultiplies the pixel's RGB values. | |
| forcedinline constexpr void | desaturate () noexcept |
| anonymous enum |
|
defaultnoexcept |
Creates a pixel without defining its colour.
Referenced by getUnpremultiplied(), PixelARGB(), and setARGB().
|
inlineconstexprnoexcept |
Creates a pixel.
References forcedinline, indexA, indexB, indexG, indexR, and PixelARGB().
|
inlineconstexprnoexcept |
Returns a uint32 which represents the pixel in a platform dependent format.
References forcedinline.
Referenced by getInARGBMaskOrder(), and juce::PixelRGB::getNativeARGB().
|
inlineconstexprnoexcept |
Returns a uint32 which will be in argb order as if constructed with the following mask operation ((alpha << 24) | (red << 16) | (green << 8) | blue).
References forcedinline, getAlpha(), getBlue(), getGreen(), getNativeARGB(), and getRed().
Referenced by juce::PixelRGB::getInARGBMaskOrder(), and getInARGBMemoryOrder().
|
inlineconstexprnoexcept |
Returns a uint32 which when written to memory, will be in the order a, r, g, b.
In other words, if the return-value is read as a uint8 array then the elements will be in the order of a, r, g, b
References forcedinline, getAlpha(), getBlue(), getGreen(), getInARGBMaskOrder(), and getRed().
Referenced by juce::PixelRGB::getInARGBMemoryOrder().
|
inlineconstexprnoexcept |
Return channels with an even index and insert zero bytes between them.
This is useful for blending operations. The exact channels which are returned is platform dependent.
References forcedinline, and getEvenBytes().
Referenced by blend(), getEvenBytes(), getOddBytes(), multiplyAlpha(), and tween().
|
inlineconstexprnoexcept |
Return channels with an odd index and insert zero bytes between them.
This is useful for blending operations. The exact channels which are returned is platform dependent.
References forcedinline, and getEvenBytes().
Referenced by blend(), multiplyAlpha(), and tween().
|
inlineconstexprnoexcept |
References forcedinline, and indexA.
Referenced by desaturate(), getInARGBMaskOrder(), getInARGBMemoryOrder(), premultiply(), and unpremultiply().
|
inlineconstexprnoexcept |
References forcedinline, and indexR.
Referenced by desaturate(), getInARGBMaskOrder(), getInARGBMemoryOrder(), premultiply(), and unpremultiply().
|
inlineconstexprnoexcept |
References forcedinline, and indexG.
Referenced by desaturate(), getInARGBMaskOrder(), getInARGBMemoryOrder(), premultiply(), and unpremultiply().
|
inlineconstexprnoexcept |
References forcedinline, and indexB.
Referenced by desaturate(), getInARGBMaskOrder(), getInARGBMemoryOrder(), premultiply(), and unpremultiply().
|
inlineconstexprnoexcept |
Copies another pixel colour over this one.
This doesn't blend it - this colour is simply replaced by the other one.
References forcedinline.
Referenced by blend().
|
inlineconstexprnoexcept |
Sets the pixel's colour from individual components.
References forcedinline, and PixelARGB().
|
inlineconstexprnoexcept |
Blends another pixel onto this one using the specified blend mode.
This takes into account the opacity of the pixel being overlaid, and blends it accordingly.
References blend(), and forcedinline.
|
inlineconstexprnoexcept |
Blends another pixel onto this one.
This takes into account the opacity of the pixel being overlaid, and blends it accordingly.
References blend(), forcedinline, and juce::sourceOver.
|
constexprnoexcept |
Blends another pixel onto this one.
This takes into account the opacity of the pixel being overlaid, and blends it accordingly.
References forcedinline, and set().
|
inlineconstexprnoexcept |
Blends another pixel onto this one, applying an extra multiplier to its opacity.
The opacity of the pixel being overlaid is scaled by the extraAlpha factor before being used, so this can blend semi-transparently from a PixelRGB argument.
Scaling with extraAlpha is done using lossy, fixed-point arithmetic, where full opacity is represented by 256.
References juce::destinationIn, juce::destinationOut, forcedinline, getEvenBytes(), getOddBytes(), juce::maskPixelComponents(), juce::source, and juce::sourceOver.
|
inlineconstexprnoexcept |
References blend(), forcedinline, and juce::sourceOver.
|
inlineconstexprnoexcept |
Blends another pixel with this one, creating a colour that is somewhere between the two, as specified by the amount.
References forcedinline, getEvenBytes(), and getOddBytes().
|
inlineconstexprnoexcept |
Replaces the colour's alpha value with another one.
References forcedinline, and indexA.
|
inlineconstexprnoexcept |
Multiplies the colour's alpha value with another one.
References forcedinline, getEvenBytes(), and getOddBytes().
Referenced by multiplyAlpha().
|
inlineconstexprnoexcept |
References forcedinline, and multiplyAlpha().
|
inlineconstexprnoexcept |
References forcedinline, PixelARGB(), and unpremultiply().
|
inlineconstexprnoexcept |
Premultiplies the pixel's RGB values by its alpha.
References forcedinline, getAlpha(), getBlue(), getGreen(), getRed(), indexB, indexG, and indexR.
|
inlineconstexprnoexcept |
Unpremultiplies the pixel's RGB values.
References forcedinline, getAlpha(), getBlue(), getGreen(), getRed(), indexB, indexG, indexR, and juce::jmin().
Referenced by getUnpremultiplied().
|
inlineconstexprnoexcept |
References forcedinline, getAlpha(), getBlue(), getGreen(), getRed(), indexB, indexG, and indexR.