Loading...
Searching...
No Matches
juce::EdgeTable Class Reference

Detailed Description

A table of horizontal scan-line segments - used for rasterising Paths.

See also
Path, Graphics

Public Member Functions

 EdgeTable (Rectangle< int > clipLimits, const Path &pathToAdd, const AffineTransform &transform)
 Creates an edge table containing a path.
 EdgeTable (Rectangle< int > rectangleToAdd)
 Creates an edge table containing a rectangle.
 EdgeTable (Rectangle< float > rectangleToAdd)
 Creates an edge table containing a rectangle.
 EdgeTable (const RectangleList< int > &rectanglesToAdd)
 Creates an edge table containing a rectangle list.
 EdgeTable (const RectangleList< float > &rectanglesToAdd)
 Creates an edge table containing a rectangle list.
void clipToRectangle (Rectangle< int > r)
void excludeRectangle (Rectangle< int > r)
void clipToEdgeTable (const EdgeTable &)
void clipLineToMask (int x, int y, const uint8 *mask, int maskStride, int numPixels)
bool isEmpty () noexcept
const Rectangle< int > & getMaximumBounds () const noexcept
void translate (float dx, int dy) noexcept
void multiplyLevels (float factor)
 Scales all the alpha-levels in the table by the given multiplier.
void optimiseTable ()
 Reduces the amount of space the table has allocated.
template<class EdgeTableIterationCallback>
void iterate (EdgeTableIterationCallback &iterationCallback) const noexcept
 Iterates the lines in the table, for rendering.

Constructors and Destructors

◆ EdgeTable() [1/5]

juce::EdgeTable::EdgeTable ( Rectangle< int > clipLimits,
const Path & pathToAdd,
const AffineTransform & transform )

Creates an edge table containing a path.

A table is created with a fixed vertical range, and only sections of the path which lie within this range will be added to the table.

Parameters
clipLimitsonly the region of the path that lies within this area will be added
pathToAddthe path to add to the table
transforma transform to apply to the path being added

Referenced by clipToEdgeTable().

◆ EdgeTable() [2/5]

juce::EdgeTable::EdgeTable ( Rectangle< int > rectangleToAdd)
explicit

Creates an edge table containing a rectangle.

◆ EdgeTable() [3/5]

juce::EdgeTable::EdgeTable ( Rectangle< float > rectangleToAdd)
explicit

Creates an edge table containing a rectangle.

◆ EdgeTable() [4/5]

juce::EdgeTable::EdgeTable ( const RectangleList< int > & rectanglesToAdd)
explicit

Creates an edge table containing a rectangle list.

◆ EdgeTable() [5/5]

juce::EdgeTable::EdgeTable ( const RectangleList< float > & rectanglesToAdd)
explicit

Creates an edge table containing a rectangle list.

Member Functions

◆ clipToRectangle()

void juce::EdgeTable::clipToRectangle ( Rectangle< int > r)

◆ excludeRectangle()

void juce::EdgeTable::excludeRectangle ( Rectangle< int > r)

◆ clipToEdgeTable()

void juce::EdgeTable::clipToEdgeTable ( const EdgeTable & )

References EdgeTable().

◆ clipLineToMask()

void juce::EdgeTable::clipLineToMask ( int x,
int y,
const uint8 * mask,
int maskStride,
int numPixels )

◆ isEmpty()

bool juce::EdgeTable::isEmpty ( )
noexcept

◆ getMaximumBounds()

const Rectangle< int > & juce::EdgeTable::getMaximumBounds ( ) const
noexcept

References getMaximumBounds().

Referenced by getMaximumBounds().

◆ translate()

void juce::EdgeTable::translate ( float dx,
int dy )
noexcept

◆ multiplyLevels()

void juce::EdgeTable::multiplyLevels ( float factor)

Scales all the alpha-levels in the table by the given multiplier.

◆ optimiseTable()

void juce::EdgeTable::optimiseTable ( )

Reduces the amount of space the table has allocated.

This will shrink the table down to use as little memory as possible - useful for read-only tables that get stored and re-used for rendering.

◆ iterate()

template<class EdgeTableIterationCallback>
void juce::EdgeTable::iterate ( EdgeTableIterationCallback & iterationCallback) const
noexcept

Iterates the lines in the table, for rendering.

This function will iterate each line in the table, and call a user-defined class to render each pixel or continuous line of pixels that the table contains.

Parameters
iterationCallbackthis templated class must contain the following methods:
inline void setEdgeTableYPos (int y);
inline void handleEdgeTablePixel (int x, int alphaLevel) const;
inline void handleEdgeTablePixelFull (int x) const;
inline void handleEdgeTableLine (int x, int width, int alphaLevel) const;
inline void handleEdgeTableLineFull (int x, int width) const;
(these don't necessarily have to be 'const', but it might help it go faster)

References juce::isPositiveAndBelow().

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram