A table of horizontal scan-line segments - used for rasterising Paths.
More...
#include <juce_EdgeTable.h>
A table of horizontal scan-line segments - used for rasterising Paths.
- See also
- Path, Graphics
@tags{Graphics}
◆ EdgeTable() [1/6]
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
-
clipLimits | only the region of the path that lies within this area will be added |
pathToAdd | the path to add to the table |
transform | a transform to apply to the path being added |
◆ EdgeTable() [2/6]
juce::EdgeTable::EdgeTable |
( |
Rectangle< int > |
rectangleToAdd | ) |
|
|
explicit |
Creates an edge table containing a rectangle.
◆ EdgeTable() [3/6]
Creates an edge table containing a rectangle.
◆ EdgeTable() [4/6]
Creates an edge table containing a rectangle list.
◆ EdgeTable() [5/6]
Creates an edge table containing a rectangle list.
◆ EdgeTable() [6/6]
juce::EdgeTable::EdgeTable |
( |
const EdgeTable & |
| ) |
|
Creates a copy of another edge table.
◆ ~EdgeTable()
juce::EdgeTable::~EdgeTable |
( |
| ) |
|
◆ addEdgePoint()
void juce::EdgeTable::addEdgePoint |
( |
int |
x, |
|
|
int |
y, |
|
|
int |
winding |
|
) |
| |
|
private |
◆ addEdgePointPair()
void juce::EdgeTable::addEdgePointPair |
( |
int |
x1, |
|
|
int |
x2, |
|
|
int |
y, |
|
|
int |
winding |
|
) |
| |
|
private |
◆ allocate()
void juce::EdgeTable::allocate |
( |
| ) |
|
|
private |
◆ clearLineSizes()
void juce::EdgeTable::clearLineSizes |
( |
| ) |
|
|
privatenoexcept |
◆ clipEdgeTableLineToRange()
void juce::EdgeTable::clipEdgeTableLineToRange |
( |
int * |
line, |
|
|
int |
x1, |
|
|
int |
x2 |
|
) |
| |
|
privatenoexcept |
◆ clipLineToMask()
void juce::EdgeTable::clipLineToMask |
( |
int |
x, |
|
|
int |
y, |
|
|
const uint8 * |
mask, |
|
|
int |
maskStride, |
|
|
int |
numPixels |
|
) |
| |
◆ clipToEdgeTable()
void juce::EdgeTable::clipToEdgeTable |
( |
const EdgeTable & |
| ) |
|
◆ clipToRectangle()
◆ copyEdgeTableData()
static void juce::EdgeTable::copyEdgeTableData |
( |
int * |
dest, |
|
|
int |
destLineStride, |
|
|
const int * |
src, |
|
|
int |
srcLineStride, |
|
|
int |
numLines |
|
) |
| |
|
staticprivatenoexcept |
◆ excludeRectangle()
void juce::EdgeTable::excludeRectangle |
( |
Rectangle< int > |
r | ) |
|
◆ getMaximumBounds()
const Rectangle<int>& juce::EdgeTable::getMaximumBounds |
( |
| ) |
const |
|
inlinenoexcept |
◆ intersectWithEdgeTableLine()
void juce::EdgeTable::intersectWithEdgeTableLine |
( |
int |
y, |
|
|
const int * |
otherLine |
|
) |
| |
|
private |
◆ isEmpty()
bool juce::EdgeTable::isEmpty |
( |
| ) |
|
|
noexcept |
◆ iterate()
template<class EdgeTableIterationCallback >
void juce::EdgeTable::iterate |
( |
EdgeTableIterationCallback & |
iterationCallback | ) |
const |
|
inlinenoexcept |
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
-
iterationCallback | this 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(), jassert, juce::gl::level, juce::gl::scale, juce::gl::x, and juce::gl::y.
◆ multiplyLevels()
void juce::EdgeTable::multiplyLevels |
( |
float |
factor | ) |
|
Scales all the alpha-levels in the table by the given multiplier.
◆ operator=()
Copies from another edge table.
◆ 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.
◆ remapTableForNumEdges()
void juce::EdgeTable::remapTableForNumEdges |
( |
int |
newNumEdgesPerLine | ) |
|
|
private |
◆ remapWithExtraSpace()
void juce::EdgeTable::remapWithExtraSpace |
( |
int |
numPointsNeeded | ) |
|
|
private |
◆ sanitiseLevels()
void juce::EdgeTable::sanitiseLevels |
( |
bool |
useNonZeroWinding | ) |
|
|
privatenoexcept |
◆ translate()
void juce::EdgeTable::translate |
( |
float |
dx, |
|
|
int |
dy |
|
) |
| |
|
noexcept |
◆ bounds
◆ defaultEdgesPerLine
constexpr auto juce::EdgeTable::defaultEdgesPerLine = 32 |
|
staticconstexprprivate |
◆ lineStrideElements
int juce::EdgeTable::lineStrideElements |
|
private |
◆ maxEdgesPerLine
int juce::EdgeTable::maxEdgesPerLine |
|
private |
◆ needToCheckEmptiness
bool juce::EdgeTable::needToCheckEmptiness = true |
|
private |
◆ scale
constexpr auto juce::EdgeTable::scale = 256 |
|
staticconstexprprivate |
◆ table
The documentation for this class was generated from the following file: