295 static constexpr float kOutset = 1.0;
296 static constexpr float kInset = -1.0;
298 static constexpr float kCenter = 1.f;
301 static constexpr float _______ = 0.f;
311 { {1.0f, 0.0f}, {1.0f, 0.0f}, kOutset, _______ },
312 { {1.0f, 0.0f}, {
kHR2,
kHR2}, kOutset, _______ },
313 { {0.0f, 1.0f}, {
kHR2,
kHR2}, kOutset, _______ },
314 { {0.0f, 1.0f}, {0.0f, 1.0f}, kOutset, _______ },
317 { {1.0f, 0.0f}, {
kHR2,
kHR2}, _______, _______ },
318 { {0.0f, 1.0f}, {
kHR2,
kHR2}, _______, _______ },
321 { {1.0f, 0.0f}, {1.0f, 0.0f},
kInset, _______ },
322 { {0.0f, 1.0f}, {0.0f, 1.0f},
kInset, _______ },
471 float aaRadius =
params.transform().localAARadius(bounds);
472 float strokeInset = 0.f;
484 float strokeRadius =
params.strokeStyle().halfWidth();
490 if (any(innerGap <= 0.f) && strokeRadius > 0.f) {
492 strokeInset = -strokeRadius;
496 strokeInset = strokeRadius;
500 if (strokeRadius > 0.f || shape.
isLine()) {
503 float joinStyle =
params.strokeStyle().joinLimit();
504 float lineFlag = shape.
isLine() ? 1.f : 0.f;
505 auto empty = size == 0.f;
513 switch(
params.strokeStyle().cap()) {
518 }
else if (
params.strokeStyle().isMiterJoin()) {
532 vw << -2.f << lineFlag << strokeRadius << joinStyle << xRadii
533 << (shape.
isLine() ? shape.
line() : bounds.ltrb());
539 vw << (-2.f - xRadii) << yRadii << bounds.ltrb();
543 SkASSERT(!bounds.isEmptyNegativeOrNaN());
545 if (
params.geometry().isEdgeAAQuad()) {
559 quad.
edgeFlags() & AAFlags::kTop ? -1.f : 0.f,
560 quad.
edgeFlags() & AAFlags::kRight ? -1.f : 0.f,
561 quad.
edgeFlags() & AAFlags::kBottom ? -1.f : 0.f};
566 vw << edgeSigns << quad.
xs() << quad.
ys();
568 vw << skvx::shuffle<2,1,0,3>(edgeSigns)
569 << skvx::shuffle<1,0,3,2>(quad.
xs())
570 << skvx::shuffle<1,0,3,2>(quad.
ys());
582 << skvx::shuffle<0,2,2,0>(ltrb)
583 << skvx::shuffle<1,1,3,3>(ltrb);
605 vw <<
center << centerWeight << aaRadius
606 <<
params.order().depthAsFloat()
608 << m.rc(0,0) << m.rc(1,0) << m.rc(3,0)
609 << m.rc(0,1) << m.rc(1,1) << m.rc(3,1)
610 << m.rc(0,3) << m.rc(1,3) << m.rc(3,3);