51 const Path& pathToAdd,
85 void multiplyLevels (
float factor);
111 template <
class EdgeTableIterationCallback>
112 void iterate (EdgeTableIterationCallback& iterationCallback)
const noexcept
114 const int* lineStart =
table;
116 for (
int y = 0;
y <
bounds.getHeight(); ++
y)
118 const int* line = lineStart;
120 int numPoints = line[0];
126 int levelAccumulator = 0;
128 iterationCallback.setEdgeTableYPos (
bounds.getY() +
y);
130 while (--numPoints >= 0)
132 const int level = *++line;
134 const int endX = *++line;
136 const int endOfRun = (endX /
scale);
138 if (endOfRun == (
x /
scale))
142 levelAccumulator += (endX -
x) * level;
148 levelAccumulator += (0x100 - (
x & 0xff)) * level;
149 levelAccumulator /=
scale;
152 if (levelAccumulator > 0)
154 if (levelAccumulator >= 255)
155 iterationCallback.handleEdgeTablePixelFull (
x);
157 iterationCallback.handleEdgeTablePixel (
x, levelAccumulator);
164 const int numPix = endOfRun - ++
x;
167 iterationCallback.handleEdgeTableLine (
x, numPix, level);
171 levelAccumulator = (endX & 0xff) * level;
177 levelAccumulator /=
scale;
179 if (levelAccumulator > 0)
184 if (levelAccumulator >= 255)
185 iterationCallback.handleEdgeTablePixelFull (
x);
187 iterationCallback.handleEdgeTablePixel (
x, levelAccumulator);
204 bool operator< (
const LineItem& other)
const noexcept {
return x < other.x; }
#define noexcept
Definition DistrhoDefines.h:72
static const unsigned long mask[]
Definition bitwise.c:31
bool isEmpty() noexcept
Definition juce_EdgeTable.cpp:819
int maxEdgesPerLine
Definition juce_EdgeTable.h:209
static constexpr auto defaultEdgesPerLine
Definition juce_EdgeTable.h:195
static constexpr auto scale
Definition juce_EdgeTable.h:196
EdgeTable(Rectangle< int > clipLimits, const Path &pathToAdd, const AffineTransform &transform)
Definition juce_EdgeTable.cpp:31
void excludeRectangle(Rectangle< int > r)
Definition juce_EdgeTable.cpp:719
HeapBlock< int > table
Definition juce_EdgeTable.h:207
void clipToEdgeTable(const EdgeTable &)
Definition juce_EdgeTable.cpp:740
void clipLineToMask(int x, int y, const uint8 *mask, int maskStride, int numPixels)
Definition juce_EdgeTable.cpp:775
void iterate(EdgeTableIterationCallback &iterationCallback) const noexcept
Definition juce_EdgeTable.h:112
const Rectangle< int > & getMaximumBounds() const noexcept
Definition juce_EdgeTable.h:81
void remapTableForNumEdges(int newNumEdgesPerLine)
Definition juce_EdgeTable.cpp:389
bool needToCheckEmptiness
Definition juce_EdgeTable.h:210
void clearLineSizes() noexcept
Definition juce_EdgeTable.cpp:304
static void copyEdgeTableData(int *dest, int destLineStride, const int *src, int srcLineStride, int numLines) noexcept
Definition juce_EdgeTable.cpp:315
void remapWithExtraSpace(int numPointsNeeded)
Definition juce_EdgeTable.cpp:407
int lineStrideElements
Definition juce_EdgeTable.h:209
void intersectWithEdgeTableLine(int y, const int *otherLine)
Definition juce_EdgeTable.cpp:503
void clipToRectangle(Rectangle< int > r)
Definition juce_EdgeTable.cpp:680
void allocate()
Definition juce_EdgeTable.cpp:299
Rectangle< int > bounds
Definition juce_EdgeTable.h:208
void sanitiseLevels(bool useNonZeroWinding) noexcept
Definition juce_EdgeTable.cpp:325
void addEdgePointPair(int x1, int x2, int y, int winding)
Definition juce_EdgeTable.cpp:442
void clipEdgeTableLineToRange(int *line, int x1, int x2) noexcept
Definition juce_EdgeTable.cpp:639
void addEdgePoint(int x, int y, int winding)
Definition juce_EdgeTable.cpp:423
Definition juce_HeapBlock.h:87
Definition juce_Path.h:65
Definition juce_Rectangle.h:67
Definition juce_RectangleList.h:43
int y
Definition inflate.c:1588
unsigned x[BMAX+1]
Definition inflate.c:1586
#define JUCE_LEAK_DETECTOR(OwnerClass)
Definition juce_LeakedObjectDetector.h:138
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
JUCE_API String translate(const String &text)
Definition juce_LocalisedStrings.cpp:188
bool isPositiveAndBelow(Type1 valueToTest, Type2 upperLimit) noexcept
Definition juce_MathsFunctions.h:279
unsigned char uint8
Definition juce_MathsFunctions.h:37
Definition juce_EdgeTable.h:201
int x
Definition juce_EdgeTable.h:202
int level
Definition juce_EdgeTable.h:202
int r
Definition crypt.c:458
dy
Definition zipinfo.c:2288
#define const
Definition zconf.h:137