Describes the layout and colours that should be used to paint a colour gradient. More...
Public Member Functions | |
| ColourGradient (const Colour &colour1, float x1, float y1, const Colour &colour2, float x2, float y2, bool isRadial) | |
| Creates a gradient object. | |
| ColourGradient () noexcept | |
| Creates an uninitialised gradient. | |
| ~ColourGradient () | |
| Destructor. | |
| void | clearColours () |
| Removes any colours that have been added. | |
| int | addColour (double proportionAlongGradient, const Colour &colour) |
| Adds a colour at a point along the length of the gradient. | |
| void | removeColour (int index) |
| Removes one of the colours from the gradient. | |
| void | multiplyOpacity (float multiplier) noexcept |
| Multiplies the alpha value of all the colours by the given scale factor. | |
| int | getNumColours () const noexcept |
| Returns the number of colour-stops that have been added. | |
| double | getColourPosition (int index) const noexcept |
| Returns the position along the length of the gradient of the colour with this index. | |
| const Colour | getColour (int index) const noexcept |
| Returns the colour that was added with a given index. | |
| void | setColour (int index, const Colour &newColour) noexcept |
| Changes the colour at a given index. | |
| Colour | getColourAtPosition (double position) const noexcept |
| Returns the an interpolated colour at any position along the gradient. | |
| int | createLookupTable (const AffineTransform &transform, HeapBlock< PixelARGB > &resultLookupTable) const |
| Creates a set of interpolated premultiplied ARGB values. | |
| bool | isOpaque () const noexcept |
| Returns true if all colours are opaque. | |
| bool | isInvisible () const noexcept |
| Returns true if all colours are completely transparent. | |
| bool | operator== (const ColourGradient &other) const noexcept |
| bool | operator!= (const ColourGradient &other) const noexcept |
Public Attributes | |
| Point< float > | point1 |
| Point< float > | point2 |
| bool | isRadial |
| If true, the gradient should be filled circularly, centred around point1, with point2 defining a point on the circumference. | |
Describes the layout and colours that should be used to paint a colour gradient.
| ColourGradient::ColourGradient | ( | const Colour & | colour1, |
| float | x1, | ||
| float | y1, | ||
| const 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 | ( | ) |
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.
| 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::addColour | ( | double | proportionAlongGradient, |
| const Colour & | colour | ||
| ) |
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::removeColour | ( | int | index ) |
Removes one of the colours from the gradient.
| void ColourGradient::multiplyOpacity | ( | float | multiplier ) |
Multiplies the alpha value of all the colours by the given scale factor.
| int ColourGradient::getNumColours | ( | ) | const |
Returns the number of colour-stops that have been added.
| double ColourGradient::getColourPosition | ( | int | index ) | const |
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
| const Colour ColourGradient::getColour | ( | int | index ) | const |
Returns the colour that was added with a given index.
The index is from 0 to getNumColours() - 1.
| void ColourGradient::setColour | ( | int | index, |
| const Colour & | newColour | ||
| ) |
Changes the colour at a given index.
The index is from 0 to getNumColours() - 1.
| Colour ColourGradient::getColourAtPosition | ( | double | position ) | const |
Returns the an interpolated colour at any position along the gradient.
| position | the position along the gradient, between 0 and 1 |
| 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.
| bool ColourGradient::isOpaque | ( | ) | const |
Returns true if all colours are opaque.
| bool ColourGradient::isInvisible | ( | ) | const |
Returns true if all colours are completely transparent.
| bool ColourGradient::operator== | ( | const ColourGradient & | other ) | const |
| bool ColourGradient::operator!= | ( | const ColourGradient & | other ) | const |
| Point<float> ColourGradient::point1 |
| Point<float> ColourGradient::point2 |
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.