27class OffsetPathsAdapter final :
public DiscardableAdapterBase<OffsetPathsAdapter,
31 const AnimationBuilder& abuilder,
40 const auto join = ParseDefault<int>(joffset[
"lj"], 1) - 1;
41 this->node()->setJoin(gJoinMap[SkTPin<int>(join, 0, std::size(gJoinMap) - 1)]);
43 this->bind(abuilder, joffset[
"a" ], fAmount);
44 this->bind(abuilder, joffset[
"ml"], fMiterLimit);
48 void onSync()
override {
49 this->node()->setOffset(fAmount);
50 this->node()->setMiterLimit(fMiterLimit);
56 using INHERITED = DiscardableAdapterBase<OffsetPathsAdapter, sksg::OffsetEffect>;
64 std::vector<sk_sp<sksg::GeometryNode>> offsetted;
65 offsetted.reserve(geos.size());
67 for (
auto& g : geos) {
69 (jround, *abuilder, std::move(g)));
static std::unique_ptr< SkEncoder > Make(SkWStream *dst, const SkPixmap *src, const SkYUVAPixmaps *srcYUVA, const SkColorSpace *srcYUVAColorSpace, const SkJpegEncoder::Options &options)
#define INHERITED(method,...)
@ kMiter_Join
extends to miter limit
@ kBevel_Join
connects outside edges
void attachDiscardableAdapter(sk_sp< T > adapter) const
static std::vector< sk_sp< sksg::GeometryNode > > AttachOffsetGeometryEffect(const skjson::ObjectValue &, const AnimationBuilder *, std::vector< sk_sp< sksg::GeometryNode > > &&)
SINT Vec< 2 *N, T > join(const Vec< N, T > &lo, const Vec< N, T > &hi)