44 realLastY =
static_cast<const SkCubicEdge*
>(
this)->fCLastY;
46 SkDebugf(
"edge (%c): firstY:%d lastY:%d (%g) x:%g dx:%g w:%d\n",
61#ifdef SK_RASTERIZE_EVEN_ROUNDING
92 if (
clip && (top >=
clip->fBottom || bot <= clip->fTop)) {
171#define MAX_COEFF_SHIFT 6
196 dist = (dist + (1 << (2 + shiftAA))) >> (3 + shiftAA);
199 return (32 -
SkCLZ(dist)) >> 1;
203 SkFDot6 x0, y0, x1, y1, x2, y2;
206#ifdef SK_RASTERIZE_EVEN_ROUNDING
326 newx = oldx + (
dx >> shift);
328 newy = oldy + (dy >> shift);
336 success = this->
updateLine(oldx, oldy, newx, newy);
339 }
while (
count > 0 && !success);
367 SkFDot6 oneThird = (
a*8 -
b*15 + 6*c +
d) * 19 >> 9;
368 SkFDot6 twoThird = (
a + 6*
b - c*15 +
d*8) * 19 >> 9;
374 SkFDot6 x0, y0, x1, y1, x2, y2, x3, y3;
377#ifdef SK_RASTERIZE_EVEN_ROUNDING
400 if (sortY && y0 > y3)
414 if (sortY && top == bot)
438 int downShift = shift + upShift - 10;
441 upShift = 10 - shift;
455 fCDx =
B + (
C >> shift) + (
D >> 2*shift);
456 fCDDx = 2*
C + (3*
D >> (shift - 1));
464 fCDy =
B + (
C >> shift) + (
D >> 2*shift);
465 fCDDy = 2*
C + (3*
D >> (shift - 1));
496 newx = oldx + (
fCDx >> dshift);
500 newy = oldy + (
fCDy >> dshift);
517 success = this->
updateLine(oldx, oldy, newx, newy);
520 }
while (
count < 0 && !success);
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
static SkFixed SkFDot6ToFixedDiv2(SkFDot6 value)
static int SkFDot6UpShift(SkFDot6 x, int upShift)
static SkFDot6 cubic_delta_from_line(SkFDot6 a, SkFDot6 b, SkFDot6 c, SkFDot6 d)
static SkFDot6 cheap_distance(SkFDot6 dx, SkFDot6 dy)
static int diff_to_shift(SkFDot6 dx, SkFDot6 dy, int shiftAA=2)
#define SkEdge_Compute_DY(top, y0)
SkFixed SkFDot6ToFixed(SkFDot6 x)
SkFixed SkFDot6Div(SkFDot6 a, SkFDot6 b)
SkFDot6 SkScalarRoundToFDot6(SkScalar x, int shift=0)
#define SkScalarToFixed(x)
#define SkFixedToFloat(x)
static SkFixed SkFixedMul(SkFixed a, SkFixed b)
static int SkCLZ(uint32_t mask)
static constexpr int32_t SkLeftShift(int32_t value, int32_t shift)
static SkPath clip(const SkPath &path, const SkHalfPlane &plane)
void swap(sk_sp< T > &a, sk_sp< T > &b)
static int32_t SkAbs32(int32_t value)
constexpr int8_t SkToS8(S x)
constexpr uint8_t SkToU8(S x)
static void dump(const float m[20], SkYUVColorSpace cs, bool rgb2yuv)
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE auto & d
static float max(float r, float g, float b)
skia_private::AutoTArray< sk_sp< SkImageFilter > > filters TypedMatrix matrix TypedMatrix matrix SkScalar dx
bool setCubicWithoutUpdate(const SkPoint pts[4], int shiftUp, bool sortY=true)
int setCubic(const SkPoint pts[4], int shiftUp)
int setLine(const SkPoint &p0, const SkPoint &p1, const SkIRect *clip, int shiftUp)
int updateLine(SkFixed ax, SkFixed ay, SkFixed bx, SkFixed by)
void chopLineWithClip(const SkIRect &clip)
int setQuadratic(const SkPoint pts[3], int shiftUp)
bool setQuadraticWithoutUpdate(const SkPoint pts[3], int shiftUp)