1
0
Fork 0

mirror on fold macro

This commit is contained in:
Enoch Riese 2023-02-19 16:24:46 +02:00
parent 18a5dac39d
commit 3bbea6d4c2
6 changed files with 62 additions and 4 deletions

View file

@ -35,9 +35,11 @@ export function Store(methods = []) {
logs.info.push(...data) logs.info.push(...data)
}, },
warning: function (...data) { warning: function (...data) {
console.warn(...data)
logs.warning.push(...data) logs.warning.push(...data)
}, },
error: function (...data) { error: function (...data) {
console.error(...data)
logs.error.push(...data) logs.error.push(...data)
}, },
} }

View file

@ -1,7 +1,7 @@
import Worker from 'web-worker' import Worker from 'web-worker'
import fileSaver from 'file-saver' import fileSaver from 'file-saver'
import { themePlugin } from '@freesewing/plugin-theme' import { themePlugin } from '@freesewing/plugin-theme'
import { pagesPlugin } from '../layout/layout-part-plugin.mjs' import { pagesPlugin } from '../layout/plugin-layout-part.mjs'
import { capitalize } from 'shared/utils.mjs' import { capitalize } from 'shared/utils.mjs'
export const exportTypes = { export const exportTypes = {

View file

@ -1,7 +1,9 @@
import { useTranslation } from 'next-i18next' import { useTranslation } from 'next-i18next'
import { CutLayoutSettings } from './settings.mjs' import { CutLayoutSettings } from './settings.mjs'
import { Draft } from '../draft/index.mjs' import { Draft } from '../draft/index.mjs'
import { fabricPlugin } from '../layout-part-plugin.mjs' import { fabricPlugin } from '../plugin-layout-part.mjs'
import { cutLayoutPlugin } from './plugin-cut-layout.mjs'
import { pluginCutlist } from '@freesewing/plugin-cutlist'
import { useEffect } from 'react' import { useEffect } from 'react'
import { measurementAsMm } from 'shared/utils.mjs' import { measurementAsMm } from 'shared/utils.mjs'
@ -19,11 +21,13 @@ export const CutLayout = (props) => {
// add the pages plugin to the draft // add the pages plugin to the draft
const layoutSettings = { const layoutSettings = {
sheetWidth: gistSettings.sheetWidth || measurementAsMm(isImperial ? 54 : 50, props.gist.units), sheetWidth: gistSettings.sheetWidth || measurementAsMm(isImperial ? 54 : 120, props.gist.units),
sheetHeight: sheetHeight:
gistSettings.sheetHeight || measurementAsMm(isImperial ? 36 : 100, props.gist.units), gistSettings.sheetHeight || measurementAsMm(isImperial ? 36 : 100, props.gist.units),
} }
draft.use(fabricPlugin(layoutSettings)) draft.use(fabricPlugin(layoutSettings))
draft.use(pluginCutlist)
draft.use(cutLayoutPlugin)
let patternProps let patternProps
try { try {

View file

@ -0,0 +1,52 @@
const prefix = 'mirroredOnFold'
export const cutLayoutPlugin = {
hooks: {
postPartDraft: (pattern) => {
const partCutlist = pattern.setStores[pattern.activeSet].get(['cutlist', pattern.activePart])
if (!partCutlist) return
const { macro } = pattern.parts[pattern.activeSet][pattern.activePart].shorthand()
if (partCutlist.cutOnFold) macro('mirrorOnFold', { fold: partCutlist.cutOnFold })
},
},
macros: {
mirrorOnFold: ({ fold }, { paths, snippets, utils, macro, points }) => {
const mirrorPaths = []
for (const p in paths) {
if (!paths[p].hidden) mirrorPaths.push(paths[p])
}
const mirrorPoints = []
const snippetsByType = {}
for (var s in snippets) {
const snip = snippets[s]
if (['logo'].indexOf(snip.def) > -1) continue
snippetsByType[snip.def] = snippetsByType[snip.def] || []
mirrorPoints.push(snip.anchor)
for (var pName in points) {
if (points[pName] === snip.anchor) {
snippetsByType[snip.def].push(prefix + utils.capitalize(pName))
break
}
}
}
macro('mirror', {
paths: mirrorPaths,
points: mirrorPoints,
mirror: fold,
prefix,
})
for (var def in snippetsByType) {
macro('sprinkle', {
snippet: def,
on: snippetsByType[def],
})
}
},
},
}

View file

@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'
import { useTranslation } from 'next-i18next' import { useTranslation } from 'next-i18next'
import { PrintLayoutSettings } from './settings.mjs' import { PrintLayoutSettings } from './settings.mjs'
import { Draft } from '../draft/index.mjs' import { Draft } from '../draft/index.mjs'
import { pagesPlugin } from '../layout-part-plugin.mjs' import { pagesPlugin } from '../plugin-layout-part.mjs'
import { import {
handleExport, handleExport,
defaultPdfSettings, defaultPdfSettings,