369 {
370
371
376
377 static const float kFullCoverage[4] = {1.f, 1.f, 1.f, 1.f};
378 static const float kZeroCoverage[4] = {0.f, 0.f, 0.f, 0.f};
380
384
385
388
389
390
391
392
395 }
396
398
399
401 geomSubset, uvSubset);
402
403
405 geomSubset, uvSubset);
406 } else {
407
409
410
411
414 edgeDistances = 0.5f;
415 } else {
420 }
421
422
426 geomSubset, uvSubset);
427
428
429
430
436 if (hairline) {
438
439
440
442 skvx::shuffle<2, 3, 0, 1>(
len));
443
444
445 edgeDistances *=
max(1.f, 2.f - maxWH);
446 }
449 geomSubset, uvSubset);
450 }
451 } else {
452
456 kIgnoredSubset, uvSubset);
457 }
458}
void reset(const GrQuad &deviceQuad, const GrQuad *localQuad)
void outset(const skvx::float4 &edgeDistances, GrQuad *deviceOutset, GrQuad *localOutset)
skvx::float4 inset(const skvx::float4 &edgeDistances, GrQuad *deviceInset, GrQuad *localInset)
skvx::float4 getEdgeLengths()
GrQuadUtils::TessellationHelper fAAHelper
static float max(float r, float g, float b)
static constexpr SkRect MakeEmpty()
SkRect makeOutset(float dx, float dy) const
bool hasLocalCoords() const
bool usesCoverageAA() const
bool requiresGeometrySubset() const
GrQuad::Type deviceQuadType() const
GrQuad::Type localQuadType() const
CoverageMode coverageMode() const
SKVX_ALWAYS_INLINE void store(void *ptr) const