|
JUCE-7.0.12-0-g4f43011b96 JUCE-7.0.12-0-g4f43011b96
JUCE — C++ application framework with suport for VST, VST3, LV2 audio plug-ins
« « « Anklang Documentation |
A path is a sequence of lines and curves that may either form a closed shape or be open-ended. More...
#include "juce_Path.h"
Classes | |
| class | Iterator |
| Iterates the lines and curves that a path contains. More... | |
Public Member Functions | |
| Path () | |
| Creates an empty path. | |
| Path (const Path &) | |
| Creates a copy of another path. | |
| ~Path () | |
| Destructor. | |
| Path & | operator= (const Path &) |
| Copies this path from another one. | |
| Path (Path &&) noexcept | |
| Move constructor. | |
| Path & | operator= (Path &&) noexcept |
| Move assignment operator. | |
| bool | operator== (const Path &) const noexcept |
| bool | operator!= (const Path &) const noexcept |
| bool | isEmpty () const noexcept |
| Returns true if the path doesn't contain any lines or curves. | |
| Rectangle< float > | getBounds () const noexcept |
| Returns the smallest rectangle that contains all points within the path. | |
| Rectangle< float > | getBoundsTransformed (const AffineTransform &transform) const noexcept |
| Returns the smallest rectangle that contains all points within the path after it's been transformed with the given transform matrix. | |
| bool | contains (float x, float y, float tolerance=defaultToleranceForTesting) const |
| Checks whether a point lies within the path. | |
| bool | contains (Point< float > point, float tolerance=defaultToleranceForTesting) const |
| Checks whether a point lies within the path. | |
| bool | intersectsLine (Line< float > line, float tolerance=defaultToleranceForTesting) const |
| Checks whether a line crosses the path. | |
| Line< float > | getClippedLine (Line< float > line, bool keepSectionOutsidePath) const |
| Cuts off parts of a line to keep the parts that are either inside or outside this path. | |
| float | getLength (const AffineTransform &transform=AffineTransform(), float tolerance=defaultToleranceForMeasurement) const |
| Returns the length of the path. | |
| Point< float > | getPointAlongPath (float distanceFromStart, const AffineTransform &transform=AffineTransform(), float tolerance=defaultToleranceForMeasurement) const |
| Returns a point that is the specified distance along the path. | |
| float | getNearestPoint (Point< float > targetPoint, Point< float > &pointOnPath, const AffineTransform &transform=AffineTransform(), float tolerance=defaultToleranceForMeasurement) const |
| Finds the point along the path which is nearest to a given position. | |
| void | clear () noexcept |
| Removes all lines and curves, resetting the path completely. | |
| void | startNewSubPath (float startX, float startY) |
| Begins a new subpath with a given starting position. | |
| void | startNewSubPath (Point< float > start) |
| Begins a new subpath with a given starting position. | |
| void | closeSubPath () |
| Closes a the current sub-path with a line back to its start-point. | |
| void | lineTo (float endX, float endY) |
| Adds a line from the shape's last position to a new end-point. | |
| void | lineTo (Point< float > end) |
| Adds a line from the shape's last position to a new end-point. | |
| void | quadraticTo (float controlPointX, float controlPointY, float endPointX, float endPointY) |
| Adds a quadratic bezier curve from the shape's last position to a new position. | |
| void | quadraticTo (Point< float > controlPoint, Point< float > endPoint) |
| Adds a quadratic bezier curve from the shape's last position to a new position. | |
| void | cubicTo (float controlPoint1X, float controlPoint1Y, float controlPoint2X, float controlPoint2Y, float endPointX, float endPointY) |
| Adds a cubic bezier curve from the shape's last position to a new position. | |
| void | cubicTo (Point< float > controlPoint1, Point< float > controlPoint2, Point< float > endPoint) |
| Adds a cubic bezier curve from the shape's last position to a new position. | |
| Point< float > | getCurrentPosition () const |
| Returns the last point that was added to the path by one of the drawing methods. | |
| void | addRectangle (float x, float y, float width, float height) |
| Adds a rectangle to the path. | |
| template<typename ValueType > | |
| void | addRectangle (Rectangle< ValueType > rectangle) |
| Adds a rectangle to the path. | |
| void | addRoundedRectangle (float x, float y, float width, float height, float cornerSize) |
| Adds a rectangle with rounded corners to the path. | |
| void | addRoundedRectangle (float x, float y, float width, float height, float cornerSizeX, float cornerSizeY) |
| Adds a rectangle with rounded corners to the path. | |
| void | addRoundedRectangle (float x, float y, float width, float height, float cornerSizeX, float cornerSizeY, bool curveTopLeft, bool curveTopRight, bool curveBottomLeft, bool curveBottomRight) |
| Adds a rectangle with rounded corners to the path. | |
| template<typename ValueType > | |
| void | addRoundedRectangle (Rectangle< ValueType > rectangle, float cornerSizeX, float cornerSizeY) |
| Adds a rectangle with rounded corners to the path. | |
| template<typename ValueType > | |
| void | addRoundedRectangle (Rectangle< ValueType > rectangle, float cornerSize) |
| Adds a rectangle with rounded corners to the path. | |
| void | addTriangle (float x1, float y1, float x2, float y2, float x3, float y3) |
| Adds a triangle to the path. | |
| void | addTriangle (Point< float > point1, Point< float > point2, Point< float > point3) |
| Adds a triangle to the path. | |
| void | addQuadrilateral (float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) |
| Adds a quadrilateral to the path. | |
| void | addEllipse (float x, float y, float width, float height) |
| Adds an ellipse to the path. | |
| void | addEllipse (Rectangle< float > area) |
| Adds an ellipse to the path. | |
| void | addArc (float x, float y, float width, float height, float fromRadians, float toRadians, bool startAsNewSubPath=false) |
| Adds an elliptical arc to the current path. | |
| void | addCentredArc (float centreX, float centreY, float radiusX, float radiusY, float rotationOfEllipse, float fromRadians, float toRadians, bool startAsNewSubPath=false) |
| Adds an arc which is centred at a given point, and can have a rotation specified. | |
| void | addPieSegment (float x, float y, float width, float height, float fromRadians, float toRadians, float innerCircleProportionalSize) |
| Adds a "pie-chart" shape to the path. | |
| void | addPieSegment (Rectangle< float > segmentBounds, float fromRadians, float toRadians, float innerCircleProportionalSize) |
| Adds a "pie-chart" shape to the path. | |
| void | addLineSegment (Line< float > line, float lineThickness) |
| Adds a line with a specified thickness. | |
| void | addArrow (Line< float > line, float lineThickness, float arrowheadWidth, float arrowheadLength) |
| Adds a line with an arrowhead on the end. | |
| void | addPolygon (Point< float > centre, int numberOfSides, float radius, float startAngle=0.0f) |
| Adds a polygon shape to the path. | |
| void | addStar (Point< float > centre, int numberOfPoints, float innerRadius, float outerRadius, float startAngle=0.0f) |
| Adds a star shape to the path. | |
| void | addBubble (Rectangle< float > bodyArea, Rectangle< float > maximumArea, Point< float > arrowTipPosition, float cornerSize, float arrowBaseWidth) |
| Adds a speech-bubble shape to the path. | |
| void | addPath (const Path &pathToAppend) |
| Adds another path to this one. | |
| void | addPath (const Path &pathToAppend, const AffineTransform &transformToApply) |
| Adds another path to this one, transforming it on the way in. | |
| void | swapWithPath (Path &) noexcept |
| Swaps the contents of this path with another one. | |
| void | preallocateSpace (int numExtraCoordsToMakeSpaceFor) |
| Preallocates enough space for adding the given number of coordinates to the path. | |
| void | applyTransform (const AffineTransform &transform) noexcept |
| Applies a 2D transform to all the vertices in the path. | |
| void | scaleToFit (float x, float y, float width, float height, bool preserveProportions) noexcept |
| Rescales this path to make it fit neatly into a given space. | |
| AffineTransform | getTransformToScaleToFit (float x, float y, float width, float height, bool preserveProportions, Justification justificationType=Justification::centred) const |
| Returns a transform that can be used to rescale the path to fit into a given space. | |
| AffineTransform | getTransformToScaleToFit (Rectangle< float > area, bool preserveProportions, Justification justificationType=Justification::centred) const |
| Returns a transform that can be used to rescale the path to fit into a given space. | |
| Path | createPathWithRoundedCorners (float cornerRadius) const |
| Creates a version of this path where all sharp corners have been replaced by curves. | |
| void | setUsingNonZeroWinding (bool isNonZeroWinding) noexcept |
| Changes the winding-rule to be used when filling the path. | |
| bool | isUsingNonZeroWinding () const |
| Returns the flag that indicates whether the path should use a non-zero winding rule. | |
| void | loadPathFromStream (InputStream &source) |
| Loads a stored path from a data stream. | |
| void | loadPathFromData (const void *data, size_t numberOfBytes) |
| Loads a stored path from a block of data. | |
| void | writePathToStream (OutputStream &destination) const |
| Stores the path by writing it out to a stream. | |
| String | toString () const |
| Creates a string containing a textual representation of this path. | |
| void | restoreFromString (StringRef stringVersion) |
| Restores this path from a string that was created with the toString() method. | |
Static Public Attributes | |
| static const float | defaultToleranceForTesting |
| static const float | defaultToleranceForMeasurement |
Friends | |
| class | PathFlatteningIterator |
| class | Path::Iterator |
| class | EdgeTable |
A path is a sequence of lines and curves that may either form a closed shape or be open-ended.
To use a path, you can create an empty one, then add lines and curves to it to create shapes, then it can be rendered by a Graphics context or used for geometric operations.
e.g.
A path object can actually contain multiple sub-paths, which may themselves be open or closed.
@tags{Graphics}
Definition at line 64 of file juce_Path.h.
| juce::Path::Path | ( | ) |
Creates an empty path.
Definition at line 101 of file juce_Path.cpp.
Creates a copy of another path.
Definition at line 109 of file juce_Path.cpp.
| juce::Path::~Path | ( | ) |
Destructor.
Definition at line 105 of file juce_Path.cpp.
|
noexcept |
Move constructor.
Definition at line 128 of file juce_Path.cpp.
| void juce::Path::addArc | ( | float | x, |
| float | y, | ||
| float | width, | ||
| float | height, | ||
| float | fromRadians, | ||
| float | toRadians, | ||
| bool | startAsNewSubPath = false |
||
| ) |
Adds an elliptical arc to the current path.
Note that when specifying the start and end angles, the curve will be drawn either clockwise or anti-clockwise according to whether the end angle is greater than the start. This means that sometimes you may need to use values greater than 2*Pi for the end angle.
| x | the left-hand edge of the rectangle in which the elliptical outline fits |
| y | the top edge of the rectangle in which the elliptical outline fits |
| width | the width of the rectangle in which the elliptical outline fits |
| height | the height of the rectangle in which the elliptical outline fits |
| fromRadians | the angle (clockwise) in radians at which to start the arc segment (where 0 is the top-centre of the ellipse) |
| toRadians | the angle (clockwise) in radians at which to end the arc segment (where 0 is the top-centre of the ellipse). This angle can be greater than 2*Pi, so for example to draw a curve clockwise from the 9 o'clock position to the 3 o'clock position via 12 o'clock, you'd use 1.5*Pi and 2.5*Pi as the start and finish points. |
| startAsNewSubPath | if true, the arc will begin a new subpath from its starting point; if false, it will be added to the current sub-path, continuing from the current position |
Definition at line 463 of file juce_Path.cpp.
| void juce::Path::addArrow | ( | Line< float > | line, |
| float | lineThickness, | ||
| float | arrowheadWidth, | ||
| float | arrowheadLength | ||
| ) |
Adds a line with an arrowhead on the end.
The arrow is added as a new closed sub-path. (Any currently open paths will be left open).
Definition at line 588 of file juce_Path.cpp.
| void juce::Path::addBubble | ( | Rectangle< float > | bodyArea, |
| Rectangle< float > | maximumArea, | ||
| Point< float > | arrowTipPosition, | ||
| float | cornerSize, | ||
| float | arrowBaseWidth | ||
| ) |
Adds a speech-bubble shape to the path.
| bodyArea | the area of the body of the bubble shape |
| maximumArea | an area which encloses the body area and defines the limits within which the arrow tip can be drawn - if the tip lies outside this area, the bubble will be drawn without an arrow |
| arrowTipPosition | the location of the tip of the arrow |
| cornerSize | the size of the rounded corners |
| arrowBaseWidth | the width of the base of the arrow where it joins the main rectangle |
Definition at line 656 of file juce_Path.cpp.
| void juce::Path::addCentredArc | ( | float | centreX, |
| float | centreY, | ||
| float | radiusX, | ||
| float | radiusY, | ||
| float | rotationOfEllipse, | ||
| float | fromRadians, | ||
| float | toRadians, | ||
| bool | startAsNewSubPath = false |
||
| ) |
Adds an arc which is centred at a given point, and can have a rotation specified.
Note that when specifying the start and end angles, the curve will be drawn either clockwise or anti-clockwise according to whether the end angle is greater than the start. This means that sometimes you may need to use values greater than 2*Pi for the end angle.
| centreX | the centre x of the ellipse |
| centreY | the centre y of the ellipse |
| radiusX | the horizontal radius of the ellipse |
| radiusY | the vertical radius of the ellipse |
| rotationOfEllipse | an angle by which the whole ellipse should be rotated about its centre, in radians (clockwise) |
| fromRadians | the angle (clockwise) in radians at which to start the arc segment (where 0 is the top-centre of the ellipse) |
| toRadians | the angle (clockwise) in radians at which to end the arc segment (where 0 is the top-centre of the ellipse). This angle can be greater than 2*Pi, so for example to draw a curve clockwise from the 9 o'clock position to the 3 o'clock position via 12 o'clock, you'd use 1.5*Pi and 2.5*Pi as the start and finish points. |
| startAsNewSubPath | if true, the arc will begin a new subpath from its starting point; if false, it will be added to the current sub-path, continuing from the current position |
Definition at line 478 of file juce_Path.cpp.
Adds an ellipse to the path.
The shape is added as a new sub-path. (Any currently open paths will be left open).
Definition at line 441 of file juce_Path.cpp.
Adds an ellipse to the path.
The shape is added as a new sub-path. (Any currently open paths will be left open).
Definition at line 446 of file juce_Path.cpp.
Adds a line with a specified thickness.
The line is added as a new closed sub-path. (Any currently open paths will be left open).
Definition at line 576 of file juce_Path.cpp.
Adds another path to this one.
The new path is added as a new sub-path. (Any currently open paths in this path will be left open).
| pathToAppend | the path to add |
Definition at line 721 of file juce_Path.cpp.
| void juce::Path::addPath | ( | const Path & | pathToAppend, |
| const AffineTransform & | transformToApply | ||
| ) |
Adds another path to this one, transforming it on the way in.
The new path is added as a new sub-path, its points being transformed by the given matrix before being added.
| pathToAppend | the path to add |
| transformToApply | an optional transform to apply to the incoming vertices |
Definition at line 762 of file juce_Path.cpp.
| void juce::Path::addPieSegment | ( | float | x, |
| float | y, | ||
| float | width, | ||
| float | height, | ||
| float | fromRadians, | ||
| float | toRadians, | ||
| float | innerCircleProportionalSize | ||
| ) |
Adds a "pie-chart" shape to the path.
The shape is added as a new sub-path. (Any currently open paths will be left open).
Note that when specifying the start and end angles, the curve will be drawn either clockwise or anti-clockwise according to whether the end angle is greater than the start. This means that sometimes you may need to use values greater than 2*Pi for the end angle.
| x | the left-hand edge of the rectangle in which the elliptical outline fits |
| y | the top edge of the rectangle in which the elliptical outline fits |
| width | the width of the rectangle in which the elliptical outline fits |
| height | the height of the rectangle in which the elliptical outline fits |
| fromRadians | the angle (clockwise) in radians at which to start the arc segment (where 0 is the top-centre of the ellipse) |
| toRadians | the angle (clockwise) in radians at which to end the arc segment (where 0 is the top-centre of the ellipse) |
| innerCircleProportionalSize | if this is > 0, then the pie will be drawn as a curved band around a hollow ellipse at its centre, where this value indicates the inner ellipse's size with respect to the outer one. |
Definition at line 520 of file juce_Path.cpp.
| void juce::Path::addPieSegment | ( | Rectangle< float > | segmentBounds, |
| float | fromRadians, | ||
| float | toRadians, | ||
| float | innerCircleProportionalSize | ||
| ) |
Adds a "pie-chart" shape to the path.
The shape is added as a new sub-path. (Any currently open paths will be left open).
Note that when specifying the start and end angles, the curve will be drawn either clockwise or anti-clockwise according to whether the end angle is greater than the start. This means that sometimes you may need to use values greater than 2*Pi for the end angle.
| segmentBounds | the outer rectangle in which the elliptical outline fits |
| fromRadians | the angle (clockwise) in radians at which to start the arc segment (where 0 is the top-centre of the ellipse) |
| toRadians | the angle (clockwise) in radians at which to end the arc segment (where 0 is the top-centre of the ellipse) |
| innerCircleProportionalSize | if this is > 0, then the pie will be drawn as a curved band around a hollow ellipse at its centre, where this value indicates the inner ellipse's size with respect to the outer one. |
Definition at line 562 of file juce_Path.cpp.
| void juce::Path::addQuadrilateral | ( | float | x1, |
| float | y1, | ||
| float | x2, | ||
| float | y2, | ||
| float | x3, | ||
| float | y3, | ||
| float | x4, | ||
| float | y4 | ||
| ) |
Adds a quadrilateral to the path.
The quad is added as a new closed sub-path. (Any currently open paths will be left open).
Note that whether the vertices are specified in clockwise or anticlockwise order will affect how the quad is filled when it overlaps other shapes (the winding order setting will affect this of course).
Definition at line 429 of file juce_Path.cpp.
Adds a rectangle to the path.
The rectangle is added as a new sub-path. (Any currently open paths will be left open).
Definition at line 318 of file juce_Path.cpp.
Adds a rectangle to the path.
The rectangle is added as a new sub-path. (Any currently open paths will be left open).
Definition at line 324 of file juce_Path.h.
| void juce::Path::addRoundedRectangle | ( | float | x, |
| float | y, | ||
| float | width, | ||
| float | height, | ||
| float | cornerSize | ||
| ) |
Adds a rectangle with rounded corners to the path.
The rectangle is added as a new sub-path. (Any currently open paths will be left open).
Definition at line 407 of file juce_Path.cpp.
| void juce::Path::addRoundedRectangle | ( | float | x, |
| float | y, | ||
| float | width, | ||
| float | height, | ||
| float | cornerSizeX, | ||
| float | cornerSizeY | ||
| ) |
Adds a rectangle with rounded corners to the path.
The rectangle is added as a new sub-path. (Any currently open paths will be left open).
Definition at line 347 of file juce_Path.cpp.
| void juce::Path::addRoundedRectangle | ( | float | x, |
| float | y, | ||
| float | width, | ||
| float | height, | ||
| float | cornerSizeX, | ||
| float | cornerSizeY, | ||
| bool | curveTopLeft, | ||
| bool | curveTopRight, | ||
| bool | curveBottomLeft, | ||
| bool | curveBottomRight | ||
| ) |
Adds a rectangle with rounded corners to the path.
The rectangle is added as a new sub-path. (Any currently open paths will be left open).
Definition at line 352 of file juce_Path.cpp.
| void juce::Path::addRoundedRectangle | ( | Rectangle< ValueType > | rectangle, |
| float | cornerSize | ||
| ) |
Adds a rectangle with rounded corners to the path.
The rectangle is added as a new sub-path. (Any currently open paths will be left open).
Definition at line 371 of file juce_Path.h.
| void juce::Path::addRoundedRectangle | ( | Rectangle< ValueType > | rectangle, |
| float | cornerSizeX, | ||
| float | cornerSizeY | ||
| ) |
Adds a rectangle with rounded corners to the path.
The rectangle is added as a new sub-path. (Any currently open paths will be left open).
Definition at line 359 of file juce_Path.h.
Adds a triangle to the path.
The triangle is added as a new closed sub-path. (Any currently open paths will be left open).
Note that whether the vertices are specified in clockwise or anticlockwise order will affect how the triangle is filled when it overlaps other shapes (the winding order setting will affect this of course).
Definition at line 412 of file juce_Path.cpp.
| void juce::Path::addTriangle | ( | Point< float > | point1, |
| Point< float > | point2, | ||
| Point< float > | point3 | ||
| ) |
Adds a triangle to the path.
The triangle is added as a new closed sub-path. (Any currently open paths will be left open).
Note that whether the vertices are specified in clockwise or anticlockwise order will affect how the triangle is filled when it overlaps other shapes (the winding order setting will affect this of course).
Definition at line 421 of file juce_Path.cpp.
|
noexcept |
Applies a 2D transform to all the vertices in the path.
Definition at line 818 of file juce_Path.cpp.
|
noexcept |
Removes all lines and curves, resetting the path completely.
Definition at line 146 of file juce_Path.cpp.
| void juce::Path::closeSubPath | ( | ) |
Closes a the current sub-path with a line back to its start-point.
When creating a closed shape such as a triangle, don't use 3 lineTo() calls - instead use two lineTo() calls, followed by a closeSubPath() to join the final point back to the start.
This ensures that closes shapes are recognised as such, and this is important for tasks like drawing strokes, which needs to know whether to draw end-caps or not.
Definition at line 287 of file juce_Path.cpp.
Checks whether a point lies within the path.
This is only relevant for closed paths (see closeSubPath()), and may produce false results if used on a path which has open sub-paths.
The path's winding rule is taken into account by this method.
The tolerance parameter is the maximum error allowed when flattening the path, so this method could return a false positive when your point is up to this distance outside the path's boundary.
Definition at line 934 of file juce_Path.cpp.
| bool juce::Path::contains | ( | Point< float > | point, |
| float | tolerance = defaultToleranceForTesting |
||
| ) | const |
Checks whether a point lies within the path.
This is only relevant for closed paths (see closeSubPath()), and may produce false results if used on a path which has open sub-paths.
The path's winding rule is taken into account by this method.
The tolerance parameter is the maximum error allowed when flattening the path, so this method could return a false positive when your point is up to this distance outside the path's boundary.
Definition at line 965 of file juce_Path.cpp.
Creates a version of this path where all sharp corners have been replaced by curves.
Wherever two lines meet at an angle, this will replace the corner with a curve of the given radius.
Definition at line 1072 of file juce_Path.cpp.
| void juce::Path::cubicTo | ( | float | controlPoint1X, |
| float | controlPoint1Y, | ||
| float | controlPoint2X, | ||
| float | controlPoint2Y, | ||
| float | endPointX, | ||
| float | endPointY | ||
| ) |
Adds a cubic bezier curve from the shape's last position to a new position.
This will connect the end-point of the last line or curve that was added to a new point, using a cubic spline with two control-points.
See the class description for an example of how to add lines and curves to a path.
Definition at line 263 of file juce_Path.cpp.
| void juce::Path::cubicTo | ( | Point< float > | controlPoint1, |
| Point< float > | controlPoint2, | ||
| Point< float > | endPoint | ||
| ) |
Adds a cubic bezier curve from the shape's last position to a new position.
This will connect the end-point of the last line or curve that was added to a new point, using a cubic spline with two control-points.
See the class description for an example of how to add lines and curves to a path.
Definition at line 278 of file juce_Path.cpp.
Returns the smallest rectangle that contains all points within the path.
Definition at line 195 of file juce_Path.cpp.
|
noexcept |
Returns the smallest rectangle that contains all points within the path after it's been transformed with the given transform matrix.
Definition at line 200 of file juce_Path.cpp.
Cuts off parts of a line to keep the parts that are either inside or outside this path.
Note that this isn't smart enough to cope with situations where the line would need to be cut into multiple pieces to correctly clip against a re-entrant shape.
| line | the line to clip |
| keepSectionOutsidePath | if true, it's the section outside the path that will be kept; if false its the section inside the path |
Definition at line 982 of file juce_Path.cpp.
Returns the last point that was added to the path by one of the drawing methods.
Definition at line 293 of file juce_Path.cpp.
| float juce::Path::getLength | ( | const AffineTransform & | transform = AffineTransform(), |
| float | tolerance = defaultToleranceForMeasurement |
||
| ) | const |
Returns the length of the path.
Definition at line 1013 of file juce_Path.cpp.
| float juce::Path::getNearestPoint | ( | Point< float > | targetPoint, |
| Point< float > & | pointOnPath, | ||
| const AffineTransform & | transform = AffineTransform(), |
||
| float | tolerance = defaultToleranceForMeasurement |
||
| ) | const |
Finds the point along the path which is nearest to a given position.
This sets pointOnPath to the nearest point, and returns the distance of this point from the start of the path.
Definition at line 1044 of file juce_Path.cpp.
| Point< float > juce::Path::getPointAlongPath | ( | float | distanceFromStart, |
| const AffineTransform & | transform = AffineTransform(), |
||
| float | tolerance = defaultToleranceForMeasurement |
||
| ) | const |
Returns a point that is the specified distance along the path.
If the distance is greater than the total length of the path, this will return the end point.
Definition at line 1024 of file juce_Path.cpp.
| AffineTransform juce::Path::getTransformToScaleToFit | ( | float | x, |
| float | y, | ||
| float | width, | ||
| float | height, | ||
| bool | preserveProportions, | ||
| Justification | justificationType = Justification::centred |
||
| ) | const |
Returns a transform that can be used to rescale the path to fit into a given space.
| x | the x position of the rectangle to fit the path inside |
| y | the y position of the rectangle to fit the path inside |
| width | the width of the rectangle to fit the path inside |
| height | the height of the rectangle to fit the path inside |
| preserveProportions | if true, it will fit the path into the space without altering its horizontal/vertical scale ratio; if false, it will distort the path to fill the specified ratio both horizontally and vertically |
| justificationType | if the proportions are preserved, the resultant path may be smaller than the available rectangle, so this describes how it should be positioned within the space. |
Definition at line 882 of file juce_Path.cpp.
| AffineTransform juce::Path::getTransformToScaleToFit | ( | Rectangle< float > | area, |
| bool | preserveProportions, | ||
| Justification | justificationType = Justification::centred |
||
| ) | const |
Returns a transform that can be used to rescale the path to fit into a given space.
| area | the rectangle to fit the path inside |
| preserveProportions | if true, it will fit the path into the space without altering its horizontal/vertical scale ratio; if false, it will distort the path to fill the specified ratio both horizontally and vertically |
| justificationType | if the proportions are preserved, the resultant path may be smaller than the available rectangle, so this describes how it should be positioned within the space. |
Definition at line 875 of file juce_Path.cpp.
| bool juce::Path::intersectsLine | ( | Line< float > | line, |
| float | tolerance = defaultToleranceForTesting |
||
| ) | const |
Checks whether a line crosses the path.
This will return positive if the line crosses any of the paths constituent lines or curves. It doesn't take into account whether the line is inside or outside the path, or whether the path is open or closed.
The tolerance parameter is the maximum error allowed when flattening the path, so this method could return a false positive when your point is up to this distance outside the path's boundary.
Definition at line 970 of file juce_Path.cpp.
|
noexcept |
Returns true if the path doesn't contain any lines or curves.
Definition at line 174 of file juce_Path.cpp.
| bool juce::Path::isUsingNonZeroWinding | ( | ) | const |
Returns the flag that indicates whether the path should use a non-zero winding rule.
The default for a new path is true.
Definition at line 716 of file juce_Path.h.
Adds a line from the shape's last position to a new end-point.
This will connect the end-point of the last line or curve that was added to a new point, using a straight line.
See the class description for an example of how to add lines and curves to a path.
Definition at line 228 of file juce_Path.cpp.
Adds a line from the shape's last position to a new end-point.
This will connect the end-point of the last line or curve that was added to a new point, using a straight line.
See the class description for an example of how to add lines and curves to a path.
Definition at line 239 of file juce_Path.cpp.
Loads a stored path from a block of data.
This is similar to loadPathFromStream(), but just reads from a block of data. Useful if you're including stored shapes in your code as a block of static data.
Definition at line 1290 of file juce_Path.cpp.
| void juce::Path::loadPathFromStream | ( | InputStream & | source | ) |
Loads a stored path from a data stream.
The data in the stream must have been written using writePathToStream().
Note that this will append the stored path to whatever is currently in this path, so you might need to call clear() beforehand.
Definition at line 1224 of file juce_Path.cpp.
Definition at line 144 of file juce_Path.cpp.
Copies this path from another one.
Definition at line 116 of file juce_Path.cpp.
Move assignment operator.
Definition at line 135 of file juce_Path.cpp.
Definition at line 143 of file juce_Path.cpp.
Preallocates enough space for adding the given number of coordinates to the path.
If you're about to add a large number of lines or curves to the path, it can make the task much more efficient to call this first and avoid costly reallocations as the structure grows. The actual value to pass is a bit tricky to calculate because the space required depends on what you're adding - e.g. each lineTo() or startNewSubPath() will require 3 coords (x, y and a type marker). Each quadraticTo() will need 5, and a cubicTo() will require 7. Closing a sub-path will require 1.
Definition at line 206 of file juce_Path.cpp.
| void juce::Path::quadraticTo | ( | float | controlPointX, |
| float | controlPointY, | ||
| float | endPointX, | ||
| float | endPointY | ||
| ) |
Adds a quadratic bezier curve from the shape's last position to a new position.
This will connect the end-point of the last line or curve that was added to a new point, using a quadratic spline with one control-point.
See the class description for an example of how to add lines and curves to a path.
Definition at line 244 of file juce_Path.cpp.
Adds a quadratic bezier curve from the shape's last position to a new position.
This will connect the end-point of the last line or curve that was added to a new point, using a quadratic spline with one control-point.
See the class description for an example of how to add lines and curves to a path.
Definition at line 257 of file juce_Path.cpp.
Restores this path from a string that was created with the toString() method.
Definition at line 1412 of file juce_Path.cpp.
|
noexcept |
Rescales this path to make it fit neatly into a given space.
This is effectively a quick way of calling applyTransform (getTransformToScaleToFit (x, y, w, h, preserveProportions))
| x | the x position of the rectangle to fit the path inside |
| y | the y position of the rectangle to fit the path inside |
| width | the width of the rectangle to fit the path inside |
| height | the height of the rectangle to fit the path inside |
| preserveProportions | if true, it will fit the path into the space without altering its horizontal/vertical scale ratio; if false, it will distort the path to fill the specified ratio both horizontally and vertically |
Definition at line 168 of file juce_Path.cpp.
Changes the winding-rule to be used when filling the path.
If set to true (which is the default), then the path uses a non-zero-winding rule to determine which points are inside the path. If set to false, it uses an alternate-winding rule.
The winding-rule comes into play when areas of the shape overlap other areas, and determines whether the overlapping regions are considered to be inside or outside.
Changing this value just sets a flag - it doesn't affect the contents of the path.
Definition at line 163 of file juce_Path.cpp.
Begins a new subpath with a given starting position.
This will move the path's current position to the coordinates passed in and make it ready to draw lines or curves starting from this position.
After adding whatever lines and curves are needed, you can either close the current sub-path using closeSubPath() or call startNewSubPath() to move to a new sub-path, leaving the old one open-ended.
Definition at line 211 of file juce_Path.cpp.
Begins a new subpath with a given starting position.
This will move the path's current position to the coordinates passed in and make it ready to draw lines or curves starting from this position.
After adding whatever lines and curves are needed, you can either close the current sub-path using closeSubPath() or call startNewSubPath() to move to a new sub-path, leaving the old one open-ended.
Definition at line 223 of file juce_Path.cpp.
Swaps the contents of this path with another one.
The internal data of the two paths is swapped over, so this is much faster than copying it to a temp variable and back.
Definition at line 152 of file juce_Path.cpp.
| String juce::Path::toString | ( | ) | const |
Creates a string containing a textual representation of this path.
Definition at line 1343 of file juce_Path.cpp.
| void juce::Path::writePathToStream | ( | OutputStream & | destination | ) | const |
Stores the path by writing it out to a stream.
After writing out a path, you can reload it using loadPathFromStream().
Definition at line 1296 of file juce_Path.cpp.
Definition at line 805 of file juce_Path.h.
|
friend |
Definition at line 804 of file juce_Path.h.
|
friend |
Definition at line 803 of file juce_Path.h.
Definition at line 90 of file juce_Path.h.
Definition at line 89 of file juce_Path.h.