#include "src/gpu/ganesh/ops/TessellationPathRenderer.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkPath.h"
#include "include/core/SkRect.h"
#include "include/core/SkStrokeRec.h"
#include "include/private/base/SkAssert.h"
#include "include/private/gpu/ganesh/GrTypesPriv.h"
#include "src/base/SkMathPriv.h"
#include "src/gpu/ganesh/GrCaps.h"
#include "src/gpu/ganesh/GrClip.h"
#include "src/gpu/ganesh/GrPaint.h"
#include "src/gpu/ganesh/GrRenderTargetProxy.h"
#include "src/gpu/ganesh/GrStyle.h"
#include "src/gpu/ganesh/GrSurfaceProxy.h"
#include "src/gpu/ganesh/GrUserStencilSettings.h"
#include "src/gpu/ganesh/SurfaceDrawContext.h"
#include "src/gpu/ganesh/effects/GrDisableColorXP.h"
#include "src/gpu/ganesh/geometry/GrStyledShape.h"
#include "src/gpu/ganesh/ops/FillPathFlags.h"
#include "src/gpu/ganesh/ops/GrOp.h"
#include "src/gpu/ganesh/ops/PathInnerTriangulateOp.h"
#include "src/gpu/ganesh/ops/PathStencilCoverOp.h"
#include "src/gpu/ganesh/ops/PathTessellateOp.h"
#include "src/gpu/ganesh/ops/StrokeTessellateOp.h"
#include "src/gpu/tessellate/Tessellation.h"
#include "src/gpu/tessellate/WangsFormula.h"
#include <utility>
class GrRecordingContext;
class SkArenaAlloc;
namespace {
usingnamespaceskgpu::tess;
GrOp::Owner make_non_convex_fill_op(GrRecordingContext* rContext,
SkArenaAlloc* arena,
skgpu::ganesh::FillPathFlags fillPathFlags,
GrAAType aaType,
const SkRect& drawBounds,
const SkIRect& clipBounds,
const SkMatrix& viewMatrix,
const SkPath& path,
GrPaint&& paint) { … }
}
namespace skgpu::ganesh {
namespace {
bool ChopPathIfNecessary(const SkMatrix& viewMatrix,
const GrStyledShape& shape,
const SkIRect& clipConservativeBounds,
const SkStrokeRec& stroke,
SkPath* chopped_path) { … }
}
bool TessellationPathRenderer::IsSupported(const GrCaps& caps) { … }
PathRenderer::StencilSupport TessellationPathRenderer::onGetStencilSupport(
const GrStyledShape& shape) const { … }
PathRenderer::CanDrawPath TessellationPathRenderer::onCanDrawPath(
const CanDrawPathArgs& args) const { … }
bool TessellationPathRenderer::onDrawPath(const DrawPathArgs& args) { … }
void TessellationPathRenderer::onStencilPath(const StencilPathArgs& args) { … }
}