} else {
SkFixed rite = currE->fX;
currE->goY(nextY, yShift);
- if (leftE->fDX < 0) {
- left = SkTMax(leftClip, left);
- leftE->fX = SkTMax(leftClip, leftE->fX);
- } else {
- left = SkTMin(rightClip, left);
- leftE->fX = SkTMin(rightClip, leftE->fX);
- }
- if (currE->fDX < 0) {
- rite = SkTMax(leftClip, rite);
- currE->fX = SkTMax(leftClip, currE->fX);
- } else {
- rite = SkTMin(rightClip, rite);
- currE->fX = SkTMin(rightClip, currE->fX);
- }
+ leftE->fX = SkTMax(leftClip, leftE->fX);
+ rite = SkTMin(rightClip, rite);
+ currE->fX = SkTMin(rightClip, currE->fX);
blit_trapezoid_row(blitter, y >> 16, left, rite, leftE->fX, currE->fX,
leftDY, currE->fDY, fullAlpha, maskRow, isUsingMask,
noRealBlitter || (fullAlpha == 0xFF && (
}
} else {
if (isLeft) {
- left = currE->fX;
+ left = SkTMax(currE->fX, leftClip);
leftDY = currE->fDY;
leftE = currE;
leftEnds = leftE->fLowerY == nextY;
leftClip, rightClip, yShift);
} else {
blit_trapezoid_row(blitter, y >> 16,
- SkTMax(leftClip, left), rightClip,
+ left, rightClip,
SkTMax(leftClip, leftE->fX), rightClip,
leftDY, 0, fullAlpha, maskRow, isUsingMask,
noRealBlitter ||
}
}
-static void aaa_fill_path(const SkPath& path, const SkIRect& clipRect,
+static SK_ALWAYS_INLINE void aaa_fill_path(const SkPath& path, const SkIRect& clipRect,
AdditiveBlitter* blitter, int start_y, int stop_y, bool pathContainedInClip,
bool isUsingMask, bool forceRLE) { // forceRLE implies that SkAAClip is calling us
SkASSERT(blitter);
// We skip intersection computation if there are many points which probably already
// give us enough fractional scan lines.
- bool skipIntersect = path.countPoints() > (stop_y - start_y) / 2;
+ bool skipIntersect = path.countPoints() > (stop_y - start_y) * 2;
aaa_walk_edges(&headEdge, &tailEdge, path.getFillType(), blitter, start_y, stop_y,
leftBound, rightBound, isUsingMask, forceRLE, useDeferred, skipIntersect);