LMMS
Loading...
Searching...
No Matches
juce::ColourGradient Class Referencefinal

#include <juce_ColourGradient.h>

Classes

struct  ColourPoint

Public Member Functions

 ColourGradient () noexcept
 ColourGradient (const ColourGradient &)
 ColourGradient (ColourGradient &&) noexcept
ColourGradientoperator= (const ColourGradient &)
ColourGradientoperator= (ColourGradient &&) noexcept
 ColourGradient (Colour colour1, float x1, float y1, Colour colour2, float x2, float y2, bool isRadial)
 ColourGradient (Colour colour1, Point< float > point1, Colour colour2, Point< float > point2, bool isRadial)
 ~ColourGradient ()
void clearColours ()
int addColour (double proportionAlongGradient, Colour colour)
void removeColour (int index)
void multiplyOpacity (float multiplier) noexcept
int getNumColours () const noexcept
double getColourPosition (int index) const noexcept
Colour getColour (int index) const noexcept
void setColour (int index, Colour newColour) noexcept
Colour getColourAtPosition (double position) const noexcept
int createLookupTable (const AffineTransform &transform, HeapBlock< PixelARGB > &resultLookupTable) const
void createLookupTable (PixelARGB *resultLookupTable, int numEntries) const noexcept
bool isOpaque () const noexcept
bool isInvisible () const noexcept
bool operator== (const ColourGradient &) const noexcept
bool operator!= (const ColourGradient &) const noexcept

Static Public Member Functions

static ColourGradient vertical (Colour colour1, float y1, Colour colour2, float y2)
static ColourGradient horizontal (Colour colour1, float x1, Colour colour2, float x2)
template<typename Type>
static ColourGradient vertical (Colour colourTop, Colour colourBottom, Rectangle< Type > area)
template<typename Type>
static ColourGradient horizontal (Colour colourLeft, Colour colourRight, Rectangle< Type > area)

Public Attributes

Point< float > point1
Point< float > point2
bool isRadial

Private Attributes

Array< ColourPointcolours

Detailed Description

Describes the layout and colours that should be used to paint a colour gradient.

See also
Graphics::setGradientFill

@tags{Graphics}

Constructor & Destructor Documentation

◆ ColourGradient() [1/5]

juce::ColourGradient::ColourGradient ( )
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() [2/5]

juce::ColourGradient::ColourGradient ( const ColourGradient & other)

◆ ColourGradient() [3/5]

juce::ColourGradient::ColourGradient ( ColourGradient && other)
noexcept

◆ ColourGradient() [4/5]

juce::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.

See also
ColourGradient

◆ ColourGradient() [5/5]

juce::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.

See also
ColourGradient

◆ ~ColourGradient()

juce::ColourGradient::~ColourGradient ( )

Destructor

Member Function Documentation

◆ addColour()

int juce::ColourGradient::addColour ( double proportionAlongGradient,
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.

Parameters
proportionAlongGradienta 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.
colourthe colour that should be used at this point
Returns
the index at which the new point was added

◆ clearColours()

void juce::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().

◆ createLookupTable() [1/2]

int juce::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.

◆ createLookupTable() [2/2]

void juce::ColourGradient::createLookupTable ( PixelARGB * resultLookupTable,
int numEntries ) const
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.

◆ getColour()

Colour juce::ColourGradient::getColour ( int index) const
noexcept

Returns the colour that was added with a given index. The index is from 0 to getNumColours() - 1.

◆ getColourAtPosition()

Colour juce::ColourGradient::getColourAtPosition ( double position) const
noexcept

Returns the an interpolated colour at any position along the gradient.

Parameters
positionthe position along the gradient, between 0 and 1

◆ getColourPosition()

double juce::ColourGradient::getColourPosition ( int index) const
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

◆ getNumColours()

int juce::ColourGradient::getNumColours ( ) const
noexcept

Returns the number of colour-stops that have been added.

◆ horizontal() [1/2]

ColourGradient juce::ColourGradient::horizontal ( Colour colour1,
float x1,
Colour colour2,
float x2 )
static

Creates a horizontal linear gradient between two X coordinates

◆ horizontal() [2/2]

template<typename Type>
ColourGradient juce::ColourGradient::horizontal ( Colour colourLeft,
Colour colourRight,
Rectangle< Type > area )
inlinestatic

Creates a horizontal linear gradient from right to left in a rectangle

◆ isInvisible()

bool juce::ColourGradient::isInvisible ( ) const
noexcept

Returns true if all colours are completely transparent.

◆ isOpaque()

bool juce::ColourGradient::isOpaque ( ) const
noexcept

Returns true if all colours are opaque.

◆ multiplyOpacity()

void juce::ColourGradient::multiplyOpacity ( float multiplier)
noexcept

Multiplies the alpha value of all the colours by the given scale factor

◆ operator!=()

bool juce::ColourGradient::operator!= ( const ColourGradient & other) const
noexcept

◆ operator=() [1/2]

ColourGradient & juce::ColourGradient::operator= ( ColourGradient && other)
noexcept

◆ operator=() [2/2]

ColourGradient & juce::ColourGradient::operator= ( const ColourGradient & other)

◆ operator==()

bool juce::ColourGradient::operator== ( const ColourGradient & other) const
noexcept

◆ removeColour()

void juce::ColourGradient::removeColour ( int index)

Removes one of the colours from the gradient.

◆ setColour()

void juce::ColourGradient::setColour ( int index,
Colour newColour )
noexcept

Changes the colour at a given index. The index is from 0 to getNumColours() - 1.

◆ vertical() [1/2]

ColourGradient juce::ColourGradient::vertical ( Colour colour1,
float y1,
Colour colour2,
float y2 )
static

Creates a vertical linear gradient between two Y coordinates

◆ vertical() [2/2]

template<typename Type>
ColourGradient juce::ColourGradient::vertical ( Colour colourTop,
Colour colourBottom,
Rectangle< Type > area )
inlinestatic

Creates a vertical linear gradient from top to bottom in a rectangle

Member Data Documentation

◆ colours

Array<ColourPoint> juce::ColourGradient::colours
private

◆ isRadial

bool juce::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.

◆ point1

Point<float> juce::ColourGradient::point1

◆ point2

Point<float> juce::ColourGradient::point2

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