1
0
Fork 0
freesewing/designs/plugintest/src/plugin-sprinkle.mjs
2023-04-15 16:21:38 +02:00

55 lines
1.3 KiB
JavaScript

import { sprinklePlugin } from '@freesewing/plugin-sprinkle'
import { base } from './base.mjs'
const pluginSprinkle = ({ Point, points, options, macro, part, store }) => {
if (['sprinkle', 'all'].indexOf(options.plugin) !== -1) {
points.center = new Point(0, 0)
points.top = new Point(0, 20)
const on = []
for (let i = 0; i < 360; i += 45) {
points[`s${i}`] = points.top.rotate(i, points.center)
on.push(`s${i}`)
}
macro('sprinkle', {
on,
snippet: options.sprinkleSnippet,
scale: options.sprinkleScale,
rotate: options.sprinkleRotate,
})
macro('bannerbox', {
topLeft: new Point(-20, -20),
bottomRight: new Point(20, 20),
text: 'macro = sprinkle',
...store.get('bannerbox.plugin'),
})
}
return part
}
export const sprinkle = {
name: 'plugintest.sprinkle',
after: base,
options: {
sprinkleScale: { pct: 100, min: 10, max: 200, menu: 'sprinkle' },
sprinkleRotate: { deg: 0, min: -360, max: 360, menu: 'sprinkle' },
sprinkleSnippet: {
dflt: 'bnotch',
list: [
'notch',
'bnotch',
'button',
'buttonhole',
'buttonhole-start',
'buttonhole-end',
'snap-stud',
'snap-socket',
'logo',
],
menu: 'sprinkle',
},
},
plugins: sprinklePlugin,
draft: pluginSprinkle,
}