Lines Matching refs:dir

47 static int xy_index(SkOpRayDir dir) {
48 return static_cast<int>(dir) & 1;
51 static SkScalar pt_xy(const SkPoint& pt, SkOpRayDir dir) {
52 return (&pt.fX)[xy_index(dir)];
55 static SkScalar pt_yx(const SkPoint& pt, SkOpRayDir dir) {
56 return (&pt.fX)[!xy_index(dir)];
59 static double pt_dxdy(const SkDVector& v, SkOpRayDir dir) {
60 return (&v.fX)[xy_index(dir)];
63 static double pt_dydx(const SkDVector& v, SkOpRayDir dir) {
64 return (&v.fX)[!xy_index(dir)];
67 static SkScalar rect_side(const SkRect& r, SkOpRayDir dir) {
68 return (&r.fLeft)[static_cast<int>(dir)];
71 static bool sideways_overlap(const SkRect& rect, const SkPoint& pt, SkOpRayDir dir) {
72 int i = !xy_index(dir);
76 static bool less_than(SkOpRayDir dir) {
77 return static_cast<bool>((static_cast<int>(dir) & 2) == 0);
80 static bool ccw_dxdy(const SkDVector& v, SkOpRayDir dir) {
81 bool vPartPos = pt_dydx(v, dir) > 0;
82 bool leftBottom = ((static_cast<int>(dir) + 1) & 2) != 0;
106 void SkOpContour::rayCheck(const SkOpRayHit& base, SkOpRayDir dir, SkOpRayHit** hits,
109 SkScalar baseXY = pt_xy(base.fPt, dir);
110 SkScalar boundsXY = rect_side(fBounds, dir);
111 bool checkLessThan = less_than(dir);
117 testSegment->rayCheck(base, dir, hits, allocator);
121 void SkOpSegment::rayCheck(const SkOpRayHit& base, SkOpRayDir dir, SkOpRayHit** hits,
123 if (!sideways_overlap(fBounds, base.fPt, dir)) {
126 SkScalar baseXY = pt_xy(base.fPt, dir);
127 SkScalar boundsXY = rect_side(fBounds, dir);
128 bool checkLessThan = less_than(dir);
133 SkScalar baseYX = pt_yx(base.fPt, dir);
134 int roots = (*CurveIntercept[fVerb * 2 + xy_index(dir)])(fPts, fWeight, baseYX, tVals);
156 SkScalar ptXY = pt_xy(pt, dir);
169 if (fabs(pt_dydx(slope, dir) * 10000) > fabs(pt_dxdy(slope, dir))) {
243 SkOpRayDir dir = hitBase.makeTestBase(this, t);
248 dir = static_cast<SkOpRayDir>(static_cast<int>(dir) + dirOffset);
250 && !pt_dydx(hitBase.fSlope, dir)) {
258 contour->rayCheck(hitBase, dir, &hitHead, &allocator);
269 xy_index(dir) ? less_than(dir) ? hit_compare_y : reverse_hit_compare_y
270 : less_than(dir) ? hit_compare_x : reverse_hit_compare_x);
273 SkDebugf("%s dir=%s seg=%d t=%1.9g pt=(%1.9g,%1.9g)\n", __FUNCTION__,
274 gDebugRayDirName[static_cast<int>(dir)], hitBase.fSpan->segment()->debugID(),
281 bool ccw = ccw_dxdy(hit->fSlope, dir);
299 bool ccw = ccw_dxdy(hit->fSlope, dir);