From b96a3b2f84926f4fef666bfba42497add03e8131 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 18 Jan 2022 14:58:10 +0100 Subject: [PATCH] feat(plugintest): Added plugin-sprinkle --- packages/plugintest/config/index.js | 24 ++++++++++++++-- packages/plugintest/src/index.js | 8 +++--- packages/plugintest/src/plugin-sprinkle.js | 32 ++++++++++++++++++++++ 3 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 packages/plugintest/src/plugin-sprinkle.js diff --git a/packages/plugintest/config/index.js b/packages/plugintest/config/index.js index ac640dd2f3c..5ed20fe7e23 100644 --- a/packages/plugintest/config/index.js +++ b/packages/plugintest/config/index.js @@ -43,6 +43,7 @@ export default { mirror: [ 'mirrorLine', 'mirrorClone' ], round: [ 'roundRadius', 'roundRender' ], scalebox: [ 'scaleboxType' ], + sprinkle: [ 'sprinkleScale', 'sprinkleRotate', 'sprinkleSnippet' ], }, measurements: [], parts: [ @@ -61,7 +62,7 @@ export default { 'notches', 'round', 'scalebox', - //'sprinkle', + 'sprinkle', //'svgattr', //'theme', //'title', @@ -70,7 +71,7 @@ export default { ], options: { plugin: { - dflt: 'scalebox', + dflt: 'sprinkle', list: [ 'all', 'banner', @@ -134,6 +135,23 @@ export default { // Round options roundRadius: { count: 10, min: 0, max: 50 }, roundRender: { bool: true }, - scaleboxType: { dflt: 'scalebox' , list: ['scalebox', 'miniscale'] } + scaleboxType: { dflt: 'scalebox' , list: ['scalebox', 'miniscale'] }, + // Logo options + sprinkleScale: { pct: 100, min: 10, max: 200 }, + sprinkleRotate: { deg: 0, min: -360, max: 360 }, + sprinkleSnippet: { + dflt: 'notch', + list: [ + 'notch', + 'bnotch', + 'button', + 'buttonhole', + 'buttonhole-start', + 'buttonhole-end', + 'snap-stud', + 'snap-socket', + 'logo', + ] + }, } } diff --git a/packages/plugintest/src/index.js b/packages/plugintest/src/index.js index 6c85275d657..447daf4d1f2 100644 --- a/packages/plugintest/src/index.js +++ b/packages/plugintest/src/index.js @@ -17,7 +17,7 @@ import mirror from '@freesewing/plugin-mirror' import notches from '@freesewing/plugin-notches' import round from '@freesewing/plugin-round' import scalebox from '@freesewing/plugin-scalebox' -//import sprinkle from '@freesewing/plugin-sprinkle' +import sprinkle from '@freesewing/plugin-sprinkle' //import svgattr from '@freesewing/plugin-svgattr' //import theme from '@freesewing/plugin-theme' //import title from '@freesewing/plugin-title' @@ -39,7 +39,7 @@ import draftMirror from './plugin-mirror' import draftNotches from './plugin-notches' import draftRound from './plugin-round' import draftScalebox from './plugin-scalebox' -//import draftSprinkle from './plugin-sprinkle' +import draftSprinkle from './plugin-sprinkle' //import draftSvgattr from './plugin-svgattr' //import draftTheme from './plugin-theme' //import draftTitle from './plugin-title' @@ -67,7 +67,7 @@ const plugins = [ notches, round, scalebox, -// sprinkle, + sprinkle, // svgattr, // theme, // title, @@ -91,7 +91,7 @@ const methods = { draftNotches, draftRound, draftScalebox, -// draftSprinkle, + draftSprinkle, // draftSvgattr, // draftTheme, // draftTitle, diff --git a/packages/plugintest/src/plugin-sprinkle.js b/packages/plugintest/src/plugin-sprinkle.js new file mode 100644 index 00000000000..33592e8f38d --- /dev/null +++ b/packages/plugintest/src/plugin-sprinkle.js @@ -0,0 +1,32 @@ + +const draftScalebox = part => { + + const { Point, points, Path, paths, options, macro } = part.shorthand() + + if (['sprinkle', 'all'].indexOf(options.plugin) !== -1) { + + points.center = new Point(0,0) + points.top = new Point(0,40) + 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 + }) + + paths.box = new Path() + .move(new Point(-50, -50)) + .line(new Point(50, 50)) + + } + + return part +} + +export default draftScalebox