Lines Matching refs:clip
13 static bool quick_reject(const SkRect& bounds, const SkRect& clip) { in quick_reject() argument
14 return bounds.fTop >= clip.fBottom || bounds.fBottom <= clip.fTop; in quick_reject()
76 static void chop_quad_in_Y(SkPoint pts[3], const SkRect& clip) { in chop_quad_in_Y() argument
81 if (pts[0].fY < clip.fTop) { in chop_quad_in_Y()
82 if (chopMonoQuadAtY(pts, clip.fTop, &t)) { in chop_quad_in_Y()
86 tmp[2].fY = clip.fTop; in chop_quad_in_Y()
87 clamp_ge(tmp[3].fY, clip.fTop); in chop_quad_in_Y()
95 if (pts[i].fY < clip.fTop) { in chop_quad_in_Y()
96 pts[i].fY = clip.fTop; in chop_quad_in_Y()
103 if (pts[2].fY > clip.fBottom) { in chop_quad_in_Y()
104 if (chopMonoQuadAtY(pts, clip.fBottom, &t)) { in chop_quad_in_Y()
107 clamp_le(tmp[1].fY, clip.fBottom); in chop_quad_in_Y()
108 tmp[2].fY = clip.fBottom; in chop_quad_in_Y()
116 if (pts[i].fY > clip.fBottom) { in chop_quad_in_Y()
117 pts[i].fY = clip.fBottom; in chop_quad_in_Y()
125 void SkEdgeClipper::clipMonoQuad(const SkPoint srcPts[3], const SkRect& clip) { in clipMonoQuad() argument
130 if (pts[2].fY <= clip.fTop || pts[0].fY >= clip.fBottom) { in clipMonoQuad()
135 chop_quad_in_Y(pts, clip); in clipMonoQuad()
146 if (pts[2].fX <= clip.fLeft) { // wholly to the left in clipMonoQuad()
147 this->appendVLine(clip.fLeft, pts[0].fY, pts[2].fY, reverse); in clipMonoQuad()
150 if (pts[0].fX >= clip.fRight) { // wholly to the right in clipMonoQuad()
152 this->appendVLine(clip.fRight, pts[0].fY, pts[2].fY, reverse); in clipMonoQuad()
161 if (pts[0].fX < clip.fLeft) { in clipMonoQuad()
162 if (chopMonoQuadAtX(pts, clip.fLeft, &t)) { in clipMonoQuad()
164 this->appendVLine(clip.fLeft, tmp[0].fY, tmp[2].fY, reverse); in clipMonoQuad()
166 tmp[2].fX = clip.fLeft; in clipMonoQuad()
167 clamp_ge(tmp[3].fX, clip.fLeft); in clipMonoQuad()
174 this->appendVLine(clip.fLeft, pts[0].fY, pts[2].fY, reverse); in clipMonoQuad()
180 if (pts[2].fX > clip.fRight) { in clipMonoQuad()
181 if (chopMonoQuadAtX(pts, clip.fRight, &t)) { in clipMonoQuad()
184 clamp_le(tmp[1].fX, clip.fRight); in clipMonoQuad()
185 tmp[2].fX = clip.fRight; in clipMonoQuad()
188 this->appendVLine(clip.fRight, tmp[2].fY, tmp[4].fY, reverse); in clipMonoQuad()
192 this->appendVLine(clip.fRight, pts[0].fY, pts[2].fY, reverse); in clipMonoQuad()
199 bool SkEdgeClipper::clipQuad(const SkPoint srcPts[3], const SkRect& clip) { in clipQuad() argument
206 if (!quick_reject(bounds, clip)) { in clipQuad()
213 this->clipMonoQuad(&monoX[x * 2], clip); in clipQuad()
229 static void chop_cubic_in_Y(SkPoint pts[4], const SkRect& clip) { in chop_cubic_in_Y() argument
232 if (pts[0].fY < clip.fTop) { in chop_cubic_in_Y()
234 if (SkChopMonoCubicAtY(pts, clip.fTop, tmp)) { in chop_cubic_in_Y()
238 tmp[3].fY = clip.fTop; in chop_cubic_in_Y()
239 clamp_ge(tmp[4].fY, clip.fTop); in chop_cubic_in_Y()
248 clamp_ge(pts[i].fY, clip.fTop); in chop_cubic_in_Y()
254 if (pts[3].fY > clip.fBottom) { in chop_cubic_in_Y()
256 if (SkChopMonoCubicAtY(pts, clip.fBottom, tmp)) { in chop_cubic_in_Y()
257 tmp[3].fY = clip.fBottom; in chop_cubic_in_Y()
258 clamp_le(tmp[2].fY, clip.fBottom); in chop_cubic_in_Y()
267 clamp_le(pts[i].fY, clip.fBottom); in chop_cubic_in_Y()
274 void SkEdgeClipper::clipMonoCubic(const SkPoint src[4], const SkRect& clip) { in clipMonoCubic() argument
279 if (pts[3].fY <= clip.fTop || pts[0].fY >= clip.fBottom) { in clipMonoCubic()
284 chop_cubic_in_Y(pts, clip); in clipMonoCubic()
294 if (pts[3].fX <= clip.fLeft) { // wholly to the left in clipMonoCubic()
295 this->appendVLine(clip.fLeft, pts[0].fY, pts[3].fY, reverse); in clipMonoCubic()
298 if (pts[0].fX >= clip.fRight) { // wholly to the right in clipMonoCubic()
300 this->appendVLine(clip.fRight, pts[0].fY, pts[3].fY, reverse); in clipMonoCubic()
306 if (pts[0].fX < clip.fLeft) { in clipMonoCubic()
308 if (SkChopMonoCubicAtX(pts, clip.fLeft, tmp)) { in clipMonoCubic()
309 this->appendVLine(clip.fLeft, tmp[0].fY, tmp[3].fY, reverse); in clipMonoCubic()
314 tmp[3].fX = clip.fLeft; in clipMonoCubic()
315 clamp_ge(tmp[4].fX, clip.fLeft); in clipMonoCubic()
323 this->appendVLine(clip.fLeft, pts[0].fY, pts[3].fY, reverse); in clipMonoCubic()
329 if (pts[3].fX > clip.fRight) { in clipMonoCubic()
331 if (SkChopMonoCubicAtX(pts, clip.fRight, tmp)) { in clipMonoCubic()
332 tmp[3].fX = clip.fRight; in clipMonoCubic()
333 clamp_le(tmp[2].fX, clip.fRight); in clipMonoCubic()
336 this->appendVLine(clip.fRight, tmp[3].fY, tmp[6].fY, reverse); in clipMonoCubic()
340 this->appendVLine(clip.fRight, pts[0].fY, pts[3].fY, reverse); in clipMonoCubic()
347 bool SkEdgeClipper::clipCubic(const SkPoint srcPts[4], const SkRect& clip) { in clipCubic() argument
354 if (!quick_reject(bounds, clip)) { in clipCubic()
361 this->clipMonoCubic(&monoX[x * 3], clip); in clipCubic()