From 0fb1fde14e2e19c0d4ee747db7fc8afdb0fc2cd1 Mon Sep 17 00:00:00 2001 From: jules Date: Thu, 9 Nov 2017 09:37:16 +0000 Subject: [PATCH] Added a couple more ColourGradient methods --- .../colour/juce_ColourGradient.cpp | 8 +++---- .../colour/juce_ColourGradient.h | 21 ++++++++++++++----- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/modules/juce_graphics/colour/juce_ColourGradient.cpp b/modules/juce_graphics/colour/juce_ColourGradient.cpp index 49d18e06ac..8ee7280a6c 100644 --- a/modules/juce_graphics/colour/juce_ColourGradient.cpp +++ b/modules/juce_graphics/colour/juce_ColourGradient.cpp @@ -77,8 +77,8 @@ ColourGradient::ColourGradient (Colour colour1, Point p1, point2 (p2), isRadial (radial) { - colours.add ({ 0.0, colour1 }); - colours.add ({ 1.0, colour2 }); + colours.add (ColourPoint { 0.0, colour1 }, + ColourPoint { 1.0, colour2 }); } ColourGradient::~ColourGradient() {} @@ -118,7 +118,7 @@ int ColourGradient::addColour (const double proportionAlongGradient, Colour colo if (proportionAlongGradient <= 0) { - colours.set (0, ColourPoint (0.0, colour)); + colours.set (0, { 0.0, colour }); return 0; } @@ -129,7 +129,7 @@ int ColourGradient::addColour (const double proportionAlongGradient, Colour colo if (colours.getReference(i).position > pos) break; - colours.insert (i, ColourPoint (pos, colour)); + colours.insert (i, { pos, colour }); return i; } diff --git a/modules/juce_graphics/colour/juce_ColourGradient.h b/modules/juce_graphics/colour/juce_ColourGradient.h index 5319af21b2..90c0eb05e0 100644 --- a/modules/juce_graphics/colour/juce_ColourGradient.h +++ b/modules/juce_graphics/colour/juce_ColourGradient.h @@ -91,6 +91,7 @@ public: Colour colour2, Point point2, bool isRadial); + //============================================================================== /** Creates a vertical linear gradient between two Y coordinates */ static ColourGradient vertical (Colour colour1, float y1, Colour colour2, float y2); @@ -99,6 +100,20 @@ public: static ColourGradient horizontal (Colour colour1, float x1, Colour colour2, float x2); + /** Creates a vertical linear gradient from top to bottom in a rectangle */ + template + static ColourGradient vertical (Colour colourTop, Colour colourBottom, Rectangle area) + { + return vertical (colourTop, (float) area.getY(), colourBottom, (float) area.getBottom()); + } + + /** Creates a horizontal linear gradient from right to left in a rectangle */ + template + static ColourGradient horizontal (Colour colourLeft, Colour colourRight, Rectangle area) + { + return horizontal (colourLeft, (float) area.getX(), colourRight, (float) area.getRight()); + } + /** Destructor */ ~ColourGradient(); @@ -121,8 +136,7 @@ public: @param colour the colour that should be used at this point @returns the index at which the new point was added */ - int addColour (double proportionAlongGradient, - Colour colour); + int addColour (double proportionAlongGradient, Colour colour); /** Removes one of the colours from the gradient. */ void removeColour (int index); @@ -194,9 +208,6 @@ private: //============================================================================== struct ColourPoint { - ColourPoint() noexcept {} - ColourPoint (double pos, Colour col) noexcept : position (pos), colour (col) {} - bool operator== (ColourPoint) const noexcept; bool operator!= (ColourPoint) const noexcept;