Lines Matching full:angle
17 /* Angles are sorted counterclockwise. The smallest angle has a positive x and the smallest
18 positive y. The largest angle has a positive x and a zero y. */
31 /* quarter angle values for sector
35 1 x > 0, y > 0, x > y nearer horizontal angle
37 3 x > 0, y > 0, x == y 45 angle
39 5 x > 0, y > 0, x < y nearer vertical angle
147 // FIXME : once this is verified to work, remove one opposite angle call
284 // the original angle is too short to get meaningful sector information
536 const SkOpAngle* angle = this;
537 while ((angle = angle->fNext) != this) {
538 int angleEnd = SkTMax(angle->fSectorStart, angle->fSectorEnd);
540 return angle; // we wrapped around
542 int angleStart = SkTMin(angle->fSectorStart, angle->fSectorEnd);
544 best = angle;
548 // back up to the first possible angle
550 angle = best;
552 while ((angle = angle->previous()) != firstBest) {
553 if (angle->fStop) {
556 int angleStart = SkTMin(angle->fSectorStart, angle->fSectorEnd);
562 best = angle;
563 bestEnd = SkTMax(angle->fSectorStart, angle->fSectorEnd);
567 angle = best;
569 angle = angle->fNext;
570 if (angle->fStop) {
573 bool orderable = best->orderable(*angle); // note: may return an unorderable angle
575 return angle;
577 best = angle;
578 } while (angle != firstBest);
581 while ((angle = angle->fNext)) {
584 if (!angle->fUnorderedSweep) {
585 sweep = angle->fSweep;
587 scratch[0] = angle->fCurvePart[1] - angle->fCurvePart[0];
592 return angle;
595 if (angle == firstBest) {
640 // OPTIMIZE: if this loops to only one other angle, after first compare fails, insert on other side
642 void SkOpAngle::insert(SkOpAngle* angle) {
643 if (angle->fNext) {
644 if (loopCount() >= angle->loopCount()) {
645 if (!merge(angle)) {
649 if (!angle->merge(this)) {
653 angle->insert(this);
663 if (angle->overlap(*this)) {
666 if (singleton || angle->after(this)) {
667 this->fNext = angle;
668 angle->fNext = next;
670 next->fNext = angle;
671 angle->fNext = this;
679 if (angle->overlap(*last) || angle->overlap(*next)) {
682 if (angle->after(last)) {
683 last->fNext = angle;
684 angle->fNext = next;
752 SkOpAngle* angle = this;
755 angle = angle->fNext;
756 int angleStart = SkTMin(angle->fSectorStart, angle->fSectorEnd);
760 angle->fStop = true;
762 lastEnd = SkTMax(angle->fSectorStart, angle->fSectorEnd);
763 } while (angle != this);
766 bool SkOpAngle::merge(SkOpAngle* angle) {
768 SkASSERT(angle->fNext);
769 SkOpAngle* working = angle;
775 } while (working != angle);
781 } while (working != angle);
784 SkOpAngle* last = angle;
785 working = angle->fNext;
793 } while (last != angle);
952 SkASSERT((fSectorStart & 3) != 3); // if the sector has no span, it can't be an exact angle
1078 // straight angle when : v2.x * (dq1.y - q1[0].y) == v2.y * (dq1.x - q1[0].x)
1115 SkOpAngle* angle = (SkOpAngle*) ptr;
1117 angle->setID(++fCount);
1119 return *angle;