Describes the layout and colours that should be used to paint a colour gradient. More...
#include <juce_ColourGradient.h>
Classes | |
struct | ColourPoint |
Public Member Functions | |
ColourGradient (Colour colour1, float x1, float y1, Colour colour2, float x2, float y2, bool isRadial) | |
Creates a gradient object. More... | |
ColourGradient (Colour colour1, Point< float > point1, Colour colour2, Point< float > point2, bool isRadial) | |
Creates a gradient object. More... | |
ColourGradient () noexcept | |
Creates an uninitialised gradient. More... | |
~ColourGradient () | |
Destructor. More... | |
int | addColour (double proportionAlongGradient, Colour colour) |
Adds a colour at a point along the length of the gradient. More... | |
void | clearColours () |
Removes any colours that have been added. More... | |
int | createLookupTable (const AffineTransform &transform, HeapBlock< PixelARGB > &resultLookupTable) const |
Creates a set of interpolated premultiplied ARGB values. More... | |
void | createLookupTable (PixelARGB *resultLookupTable, int numEntries) const noexcept |
Creates a set of interpolated premultiplied ARGB values. More... | |
Colour | getColour (int index) const noexcept |
Returns the colour that was added with a given index. More... | |
Colour | getColourAtPosition (double position) const noexcept |
Returns the an interpolated colour at any position along the gradient. More... | |
double | getColourPosition (int index) const noexcept |
Returns the position along the length of the gradient of the colour with this index. More... | |
int | getNumColours () const noexcept |
Returns the number of colour-stops that have been added. More... | |
bool | isInvisible () const noexcept |
Returns true if all colours are completely transparent. More... | |
bool | isOpaque () const noexcept |
Returns true if all colours are opaque. More... | |
void | multiplyOpacity (float multiplier) noexcept |
Multiplies the alpha value of all the colours by the given scale factor. More... | |
bool | operator!= (const ColourGradient &) const noexcept |
bool | operator== (const ColourGradient &) const noexcept |
void | removeColour (int index) |
Removes one of the colours from the gradient. More... | |
void | setColour (int index, Colour newColour) noexcept |
Changes the colour at a given index. More... | |
Public Attributes | |
bool | isRadial |
If true, the gradient should be filled circularly, centred around point1, with point2 defining a point on the circumference. More... | |
Point< float > | point1 |
Point< float > | point2 |
Private Attributes | |
Array< ColourPoint > | colours |
Describes the layout and colours that should be used to paint a colour gradient.
ColourGradient::ColourGradient | ( | Colour | colour1, |
float | x1, | ||
float | y1, | ||
Colour | colour2, | ||
float | x2, | ||
float | y2, | ||
bool | isRadial | ||
) |
Creates a gradient object.
(x1, y1) is the location to draw with colour1. Likewise (x2, y2) is where colour2 should be. In between them there's a gradient.
If isRadial is true, the colours form a circular gradient with (x1, y1) at its centre.
The alpha transparencies of the colours are used, so note that if you blend from transparent to a solid colour, the RGB of the transparent colour will become visible in parts of the gradient. e.g. blending from Colour::transparentBlack to Colours::white will produce a muddy grey colour midway, but Colour::transparentWhite to Colours::white will be white all the way across.
ColourGradient::ColourGradient | ( | Colour | colour1, |
Point< float > | point1, | ||
Colour | colour2, | ||
Point< float > | point2, | ||
bool | isRadial | ||
) |
Creates a gradient object.
point1 is the location to draw with colour1. Likewise point2 is where colour2 should be. In between them there's a gradient.
If isRadial is true, the colours form a circular gradient with point1 at its centre.
The alpha transparencies of the colours are used, so note that if you blend from transparent to a solid colour, the RGB of the transparent colour will become visible in parts of the gradient. e.g. blending from Colour::transparentBlack to Colours::white will produce a muddy grey colour midway, but Colour::transparentWhite to Colours::white will be white all the way across.
|
noexcept |
Creates an uninitialised gradient.
If you use this constructor instead of the other one, be sure to set all the object's public member variables before using it!
ColourGradient::~ColourGradient | ( | ) |
Destructor.
Adds a colour at a point along the length of the gradient.
This allows the gradient to go through a spectrum of colours, instead of just a start and end colour.
proportionAlongGradient | a value between 0 and 1.0, which is the proportion of the distance along the line between the two points at which the colour should occur. |
colour | the colour that should be used at this point |
void ColourGradient::clearColours | ( | ) |
Removes any colours that have been added.
This will also remove any start and end colours, so the gradient won't work. You'll need to add more colours with addColour().
int ColourGradient::createLookupTable | ( | const AffineTransform & | transform, |
HeapBlock< PixelARGB > & | resultLookupTable | ||
) | const |
Creates a set of interpolated premultiplied ARGB values.
This will resize the HeapBlock, fill it with the colours, and will return the number of colours that it added. When calling this, the ColourGradient must have at least 2 colour stops specified.
Referenced by RenderingHelpers::SoftwareRendererSavedState::fillWithGradient().
|
noexcept |
Creates a set of interpolated premultiplied ARGB values.
This will fill an array of a user-specified size with the gradient, interpolating to fit. The numEntries argument specifies the size of the array, and this size must be greater than zero. When calling this, the ColourGradient must have at least 2 colour stops specified.
Returns the colour that was added with a given index.
The index is from 0 to getNumColours() - 1.
|
noexcept |
Returns the an interpolated colour at any position along the gradient.
position | the position along the gradient, between 0 and 1 |
|
noexcept |
Returns the position along the length of the gradient of the colour with this index.
The index is from 0 to getNumColours() - 1. The return value will be between 0.0 and 1.0
|
noexcept |
Returns the number of colour-stops that have been added.
|
noexcept |
Returns true if all colours are completely transparent.
|
noexcept |
Returns true if all colours are opaque.
|
noexcept |
Multiplies the alpha value of all the colours by the given scale factor.
Referenced by RenderingHelpers::SavedStateBase< SoftwareRendererSavedState >::fillShape().
|
noexcept |
|
noexcept |
void ColourGradient::removeColour | ( | int | index | ) |
Removes one of the colours from the gradient.
Changes the colour at a given index.
The index is from 0 to getNumColours() - 1.
|
private |
bool ColourGradient::isRadial |
If true, the gradient should be filled circularly, centred around point1, with point2 defining a point on the circumference.
If false, the gradient is linear between the two points.
Referenced by RenderingHelpers::EdgeTableFillers::renderGradient().
Point<float> ColourGradient::point1 |
Point<float> ColourGradient::point2 |