Browse Source

Added a constructor to ColourGradient that takes Point arguments

tags/2021-05-28
jules 8 years ago
parent
commit
bc78b2f524
2 changed files with 34 additions and 2 deletions
  1. +13
    -2
      modules/juce_graphics/colour/juce_ColourGradient.cpp
  2. +21
    -0
      modules/juce_graphics/colour/juce_ColourGradient.h

+ 13
- 2
modules/juce_graphics/colour/juce_ColourGradient.cpp View File

@@ -43,6 +43,17 @@ ColourGradient::ColourGradient (Colour colour1, const float x1, const float y1,
colours.add (ColourPoint (1.0, colour2)); colours.add (ColourPoint (1.0, colour2));
} }
ColourGradient::ColourGradient (Colour colour1, Point<float> p1,
Colour colour2, Point<float> p2,
const bool radial)
: point1 (p1),
point2 (p2),
isRadial (radial)
{
colours.add (ColourPoint (0.0, colour1));
colours.add (ColourPoint (1.0, colour2));
}
ColourGradient::~ColourGradient() ColourGradient::~ColourGradient()
{ {
} }
@@ -141,12 +152,12 @@ Colour ColourGradient::getColourAtPosition (const double position) const noexcep
while (position < colours.getReference(i).position) while (position < colours.getReference(i).position)
--i; --i;
const ColourPoint& p1 = colours.getReference (i);
auto& p1 = colours.getReference (i);
if (i >= colours.size() - 1) if (i >= colours.size() - 1)
return p1.colour; return p1.colour;
const ColourPoint& p2 = colours.getReference (i + 1);
auto& p2 = colours.getReference (i + 1);
return p1.colour.interpolatedWith (p2.colour, (float) ((position - p1.position) / (p2.position - p1.position))); return p1.colour.interpolatedWith (p2.colour, (float) ((position - p1.position) / (p2.position - p1.position)));
} }


+ 21
- 0
modules/juce_graphics/colour/juce_ColourGradient.h View File

@@ -56,6 +56,27 @@ public:
Colour colour2, float x2, float y2, Colour colour2, float x2, float y2,
bool isRadial); 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 ColourGradient
*/
ColourGradient (Colour colour1, Point<float> point1,
Colour colour2, Point<float> point2,
bool isRadial);
/** Creates an uninitialised gradient. /** Creates an uninitialised gradient.
If you use this constructor instead of the other one, be sure to set all the If you use this constructor instead of the other one, be sure to set all the


Loading…
Cancel
Save