diff --git a/packages/core/src/index.js b/packages/core/src/index.js index 5114234c969..1178d68e2df 100644 --- a/packages/core/src/index.js +++ b/packages/core/src/index.js @@ -18,9 +18,13 @@ export { Snippet, utils, } + // This is a helper for configuration files export const pctBasedOn = utils.pctBasedOn +// This is a helper for manual layouts +export const generatePartTransform = utils.generatePartTransform + /* * Default exports will be removed in FreeSewing v3 */ diff --git a/packages/core/src/part.js b/packages/core/src/part.js index 635a1521e92..ae19aad1a80 100644 --- a/packages/core/src/part.js +++ b/packages/core/src/part.js @@ -350,33 +350,9 @@ Part.prototype.shorthand = function () { return shorthand } -/** generate the transform attributes needed for the given part */ -export const generatePartTransform = (x, y, rotate, flipX, flipY, part) => { - const center = { - x: part.topLeft.x + (part.bottomRight.x - part.topLeft.x)/2, - y: part.topLeft.y + (part.bottomRight.y - part.topLeft.y)/2, - } - - const transforms = [`translate(${x},${y})`] - if (flipX) transforms.push( - 'scale(-1, 1)', - ) - if (flipY) transforms.push( - 'scale(1, -1)', - ) - if (rotate) transforms.push( - `rotate(${rotate})` - ) - - return { - transform: transforms.join(' '), - 'transform-origin': `${center.x} ${center.y}` - } -} - Part.prototype.generateTransform = function(transforms) { const {move, rotate, flipX, flipY} = transforms; - const generated = generatePartTransform(move.x, move.y, rotate, flipX, flipY, this); + const generated = utils.generatePartTransform(move.x, move.y, rotate, flipX, flipY, this); for (var t in generated) { this.attr(t, generated[t], true); diff --git a/packages/core/src/utils.js b/packages/core/src/utils.js index de6bc24ee98..41a2f2f2356 100644 --- a/packages/core/src/utils.js +++ b/packages/core/src/utils.js @@ -359,3 +359,28 @@ export function pctBasedOn(measurement) { fromAbs: (val, { measurements }) => Math.round((10 * val) / measurements[measurement]) / 10, } } + +/** Generates the transform attributes needed for a given part */ +export const generatePartTransform = (x, y, rotate, flipX, flipY, part) => { + const center = { + x: part.topLeft.x + (part.bottomRight.x - part.topLeft.x)/2, + y: part.topLeft.y + (part.bottomRight.y - part.topLeft.y)/2, + } + + const transforms = [`translate(${x},${y})`] + if (flipX) transforms.push( + 'scale(-1, 1)', + ) + if (flipY) transforms.push( + 'scale(1, -1)', + ) + if (rotate) transforms.push( + `rotate(${rotate})` + ) + + return { + transform: transforms.join(' '), + 'transform-origin': `${center.x} ${center.y}` + } +} +