8#ifndef skgpu_tessellate_Tessellation_DEFINED
9#define skgpu_tessellate_Tessellation_DEFINED
72 return (1 << resolveLevel) - 1;
109 :
sizeof(uint8_t)) * 4 : 0) +
137 return a.cross(
b) == 0 &&
a.dot(
b) < 0;
147 switch (
stroke.getJoin()) {
172 return a.getWidth() ==
b.getWidth() &&
a.getJoin() ==
b.getJoin() &&
204 return strokeParams.
fJoinType > 0.f ? 4 : 3;
211 float cosTheta = 1.f - (1.f /
kPrecision) / approxDevStrokeRadius;
212 return .5f / acosf(
std::max(cosTheta, -1.f));
#define GR_MAKE_BITFIELD_CLASS_OPS(X)
@ kMiter_Join
extends to miter limit
@ kBevel_Join
connects outside edges
static float max(float r, float g, float b)
static constexpr float kMaxSegmentsPerCurve_p4
static constexpr int kMaxParametricSegments_p4
SkPath PreChopPathCurves(float tessellationPrecision, const SkPath &path, const SkMatrix &matrix, const SkRect &viewport)
static constexpr float kMaxSegmentsPerCurve_p2
float GetJoinType(const SkStrokeRec &stroke)
static constexpr float kTriangularConicCurveType
static constexpr float kMaxSegmentsPerCurve
bool ConicHasCusp(const SkPoint p[3])
float CalcNumRadialSegmentsPerRadian(float approxDevStrokeRadius)
static constexpr int NumCurveTrianglesAtResolveLevel(int resolveLevel)
int FindCubicConvex180Chops(const SkPoint pts[], float T[2], bool *areCusps)
static constexpr int kMaxResolveLevel
static constexpr int kMaxParametricSegments_p2
constexpr size_t PatchAttribsStride(PatchAttribs attribs)
static constexpr float kPrecision
constexpr size_t PatchStride(PatchAttribs attribs)
bool StrokesHaveEqualParams(const SkStrokeRec &a, const SkStrokeRec &b)
static constexpr float kCubicCurveType
static constexpr int kMaxParametricSegments
static constexpr float kConicCurveType
constexpr int NumFixedEdgesInJoin(SkPaint::Join joinType)
void set(const SkStrokeRec &stroke)
StrokeParams(const SkStrokeRec &stroke)
StrokeParams(float radius, float joinType)