#include "include/core/SkPath.h"
#include "include/core/SkRect.h"
#include "include/core/SkRefCnt.h"
#include "include/core/SkScalar.h"
#include "include/private/base/SkAssert.h"
#include "include/private/base/SkPoint_impl.h"
#include "modules/skottie/src/Adapter.h"
#include "modules/skottie/src/SkottiePriv.h"
#include "modules/skottie/src/SkottieValue.h"
#include "modules/skottie/src/layers/shapelayer/ShapeLayer.h"
#include "modules/sksg/include/SkSGGeometryEffect.h"
#include "modules/sksg/include/SkSGGeometryNode.h"
#include "modules/sksg/include/SkSGNode.h"
#include "src/core/SkGeometry.h"
#include "src/utils/SkJSON.h"
#include <utility>
#include <vector>
namespace skottie::internal {
namespace {
static SkPoint lerp(const SkPoint& p0, const SkPoint& p1, SkScalar t) { … }
class PuckerBloatEffect final : public sksg::GeometryEffect { … };
class PuckerBloatAdapter final : public DiscardableAdapterBase<PuckerBloatAdapter,
PuckerBloatEffect> { … };
}
std::vector<sk_sp<sksg::GeometryNode>> ShapeBuilder::AttachPuckerBloatGeometryEffect(
const skjson::ObjectValue& jround, const AnimationBuilder* abuilder,
std::vector<sk_sp<sksg::GeometryNode>>&& geos) { … }
}