Lines Matching refs:seg
465 std::vector<PathSegment> strokeSegment(const PathSegment& seg,
483 static SkPoint unitNormal(const PathSegment& seg, float t, SkPoint* tangentOut);
486 static int segmentDegree(const PathSegment& seg);
489 static void splitSegment(const PathSegment& seg, float t, PathSegment* segA, PathSegment* segB);
495 static void approximateSegment(const PathSegment& seg,
532 for (const PathSegment& seg : strokes.fOuter) {
533 fOuter.quadTo(seg.fPoints[1], seg.fPoints[2]);
536 for (const PathSegment& seg : strokes.fInner) {
537 fInner.quadTo(seg.fPoints[1], seg.fPoints[2]);
639 const PathSegment& seg, const ScalarBezCurve& distanceFunc) const {
646 Item(const PathSegment& seg,
649 : fSeg(seg), fDistFnc(distFnc), fDistFncSqd(distFncSqd) {
650 const int segDegree = segmentDegree(seg);
654 fSegX[i] = seg.fPoints[i].fX;
655 fSegY[i] = seg.fPoints[i].fY;
662 stack.push(Item(seg, distanceFunc, ScalarBezCurve::Mul(distanceFunc, distanceFunc)));
885 int SkVarWidthStroker::segmentDegree(const PathSegment& seg) {
894 const int deg = lut[static_cast<uint8_t>(seg.fVerb)];
899 void SkVarWidthStroker::splitSegment(const PathSegment& seg,
904 const int degree = segmentDegree(seg);
907 x[i] = seg.fPoints[i].fX;
908 y[i] = seg.fPoints[i].fY;
915 segA->fVerb = segB->fVerb = seg.fVerb;
922 void SkVarWidthStroker::approximateSegment(const PathSegment& seg,
930 SkPoint offsetStart = unitNormal(seg, 0, &tangentStart);
931 SkPoint offsetEnd = unitNormal(seg, 1, &tangentEnd);
943 switch (segmentDegree(seg)) {
945 start = seg.fPoints[0];
946 end = seg.fPoints[1];
950 start = seg.fPoints[0];
951 mid = seg.fPoints[1];
952 end = seg.fPoints[2];
955 start = seg.fPoints[0];
956 mid = (seg.fPoints[1] + seg.fPoints[2]) * 0.5f;
957 end = seg.fPoints[3];
970 SkPoint SkVarWidthStroker::unitNormal(const PathSegment& seg, float t, SkPoint* tangentOut) {
971 switch (seg.fVerb) {
973 const SkPoint tangent = setLength(seg.fPoints[1] - seg.fPoints[0], 1);
983 tangent = seg.fPoints[1] - seg.fPoints[0];
985 tangent = seg.fPoints[2] - seg.fPoints[1];
987 tangent = ((seg.fPoints[1] - seg.fPoints[0]) * (1 - t) +
988 (seg.fPoints[2] - seg.fPoints[1]) * t) *
1002 SkEvalCubicAt(seg.fPoints.data(), t, nullptr, &tangent, nullptr);
1013 SkDebugf("Unhandled verb for unit normal %d\n", seg.fVerb);