Lines Matching refs:rrect

20 // The effects defined here only handle rrect radii >= kRadiusMin.
83 uint32_t circularCornerFlags, const SkRRect& rrect) {
88 new CircularRRectEffect(std::move(inputFP), edgeType, circularCornerFlags, rrect)));
94 const SkRRect& rrect)
98 , fRRect(rrect)
129 SkRRect rrect;
130 rrect.setRectXY(SkRect::MakeWH(w, h), r, r);
136 std::tie(success, fp) = GrRRectEffect::Make(std::move(fp), et, rrect,
162 // The inner rect is the rrect bounds inset by the radius. Its left, top, right, and bottom
163 // edges correspond to components x, y, z, and w, respectively. When a side of the rrect has
185 // to that corner. This means that points near the interior near the rrect top edge will have
189 // the rrect will have a (0,0) vector at all four corners. So long as the radius > 0.5 they will
195 // For the cases where one half of the rrect is rectangular we drop one of the x or y
297 const SkRRect& rrect = crre.fRRect;
298 if (rrect != fPrevRRect) {
299 SkRect rect = rrect.getBounds();
303 SkASSERT(SkRRectPriv::IsSimpleCircular(rrect));
304 radius = SkRRectPriv::GetSimpleRadii(rrect).fX;
309 radius = rrect.radii(SkRRect::kUpperLeft_Corner).fX;
316 radius = rrect.radii(SkRRect::kUpperRight_Corner).fX;
323 radius = rrect.radii(SkRRect::kLowerRight_Corner).fX;
330 radius = rrect.radii(SkRRect::kLowerLeft_Corner).fX;
337 radius = rrect.radii(SkRRect::kUpperLeft_Corner).fX;
344 radius = rrect.radii(SkRRect::kUpperLeft_Corner).fX;
351 radius = rrect.radii(SkRRect::kUpperRight_Corner).fX;
358 radius = rrect.radii(SkRRect::kLowerLeft_Corner).fX;
370 fPrevRRect = rrect;
428 const SkRRect& rrect) {
433 new EllipticalRRectEffect(std::move(inputFP), edgeType, rrect)));
438 const SkRRect& rrect)
442 , fRRect(rrect)
477 SkRRect rrect;
479 // half the time create a four-radii rrect.
489 rrect.setRectRadii(SkRect::MakeWH(w, h), r);
491 rrect.setRectXY(SkRect::MakeWH(w, h), r[SkRRect::kUpperLeft_Corner].fX,
498 std::tie(success, fp) = GrRRectEffect::Make(std::move(fp), et, rrect,
524 // The inner rect is the rrect bounds inset by the x/y radii
531 // to that corner. This means that points near the interior near the rrect top edge will have
535 // the rrect will have a (0,0) vector at all four corners. So long as the radii > 0.5 they will
618 const SkRRect& rrect = erre.fRRect;
621 if (rrect != fPrevRRect) {
622 SkRect rect = rrect.getBounds();
623 const SkVector& r0 = rrect.radii(SkRRect::kUpperLeft_Corner);
626 switch (rrect.getType()) {
643 const SkVector& r1 = rrect.radii(SkRRect::kLowerRight_Corner);
670 fPrevRRect = rrect;
694 GrClipEdgeType edgeType, const SkRRect& rrect,
696 if (rrect.isRect()) {
697 auto fp = GrFragmentProcessor::Rect(std::move(inputFP), edgeType, rrect.getBounds());
701 if (rrect.isOval()) {
702 return GrOvalEffect::Make(std::move(inputFP), edgeType, rrect.getBounds(), caps);
705 if (rrect.isSimple()) {
706 if (SkRRectPriv::GetSimpleRadii(rrect).fX < kRadiusMin ||
707 SkRRectPriv::GetSimpleRadii(rrect).fY < kRadiusMin) {
710 auto fp = GrFragmentProcessor::Rect(std::move(inputFP), edgeType, rrect.getBounds());
713 if (SkRRectPriv::GetSimpleRadii(rrect).fX == SkRRectPriv::GetSimpleRadii(rrect).fY) {
715 CircularRRectEffect::kAll_CornerFlags, rrect);
717 return EllipticalRRectEffect::Make(std::move(inputFP), edgeType, rrect);
721 if (rrect.isComplex() || rrect.isNinePatch()) {
729 radii[c] = rrect.radii((SkRRect::Corner)c);
758 // This rrect should have been caught in the simple case above. Though, it would
770 SkTCopyOnFirstWrite<SkRRect> rr(rrect);
772 rr.writable()->setRectRadii(rrect.getBounds(), radii);
778 GrFragmentProcessor::Rect(std::move(inputFP), edgeType, rrect.getBounds());
782 const SkVector ul = rrect.radii(SkRRect::kUpperLeft_Corner);
783 const SkVector lr = rrect.radii(SkRRect::kLowerRight_Corner);
784 if (rrect.isNinePatch() &&
789 return EllipticalRRectEffect::Make(std::move(inputFP), edgeType, rrect);