71 return {fX[
i] / fW[
i], fY[
i] / fW[
i]};
73 return {fX[
i], fY[
i]};
78 w << this->
point(cornerIdx);
83 return this->projectedBounds();
98 for (
int i = 0;
i < 4; ++
i) {
105 return accum == 0.0f;
108 float x(
int i)
const {
return fX[
i]; }
109 float y(
int i)
const {
return fY[
i]; }
110 float w(
int i)
const {
return fW[
i]; }
132 const float*
xs()
const {
return fX; }
133 float*
xs() {
return fX; }
134 const float*
ys()
const {
return fY; }
135 float*
ys() {
return fY; }
136 const float*
ws()
const {
return fW; }
137 float*
ws() {
return fW; }
142 fW[0] = fW[1] = fW[2] = fW[3] = 1.f;
171 SkRect projectedBounds()
const;
175 float fW[4] = {1.f, 1.f, 1.f, 1.f};
static constexpr bool SkIsNaN(T x)
static constexpr float sk_ieee_float_divide(float numer, float denom)
static bool SkScalarNearlyEqual(SkScalar x, SkScalar y, SkScalar tolerance=SK_ScalarNearlyZero)
skvx::Vec< 4, float > iw4f() const
static const int kTypeCount
void writeVertex(int cornerIdx, skgpu::VertexWriter &w) const
static GrQuad MakeFromRect(const SkRect &, const SkMatrix &)
skvx::Vec< 4, float > y4f() const
bool aaHasEffectOnRect(GrQuadAAFlags edgeFlags) const
bool hasPerspective() const
bool asRect(SkRect *rect) const
static GrQuad MakeFromSkQuad(const SkPoint pts[4], const SkMatrix &)
skvx::Vec< 4, float > x4f() const
void setQuadType(Type newType)
GrQuad & operator=(const GrQuad &)=default
SkPoint point(int i) const
friend class GrQuadListBase
SkPoint3 point3(int i) const
GrQuad(const GrQuad &)=default
GrQuad(const SkRect &rect)
skvx::Vec< 4, float > w4f() const
static float max(float r, float g, float b)
static float min(float r, float g, float b)
sk_sp< SkBlender > blender SkRect rect
static SKVX_ALWAYS_INLINE Vec Load(const void *ptr)