1
0
Fork 0

chore(titan): Ported to v3

This commit is contained in:
joostdecock 2022-09-03 16:19:15 +02:00
parent e40b385309
commit 64f69daf84
4 changed files with 79 additions and 97 deletions

View file

@ -1,79 +0,0 @@
import configHelpers from '@freesewing/config-helpers'
import pkg from '../package.json' assert { type: 'json' }
const { version } = pkg
const { elastics, pctBasedOn } = configHelpers
export default {
version,
name: 'titan',
design: ['Debra Bean', 'Joost De Cock'],
code: 'Joost De Cock',
department: 'bottoms',
type: 'block',
difficulty: 3,
optionGroups: {
fit: ['seatEase', 'kneeEase', 'waistEase'],
style: ['waistHeight', 'fitKnee', 'lengthBonus', 'crotchDrop'],
advanced: [
'crossSeamCurveStart',
'crossSeamCurveBend',
'crossSeamCurveAngle',
'crotchSeamCurveStart',
'crotchSeamCurveBend',
'crotchSeamCurveAngle',
'grainlinePosition',
'legBalance',
'waistBalance',
'waistbandWidth',
],
},
measurements: [
'crossSeam',
'crossSeamFront',
'knee',
'seat',
'seatBack',
'waist',
'waistBack',
'waistToFloor',
'waistToKnee',
'waistToHips',
'waistToSeat',
'waistToUpperLeg',
],
dependencies: {
front: 'back',
},
options: {
// Constants
titanPaperless: true,
fitCrossSeam: true,
fitCrossSeamFront: true,
fitCrossSeamBack: true,
fitGuides: true,
// Fit
waistEase: { pct: 2, min: 0, max: 10 },
seatEase: { pct: 2, min: 0, max: 10 },
kneeEase: { pct: 6, min: 1, max: 25 },
// Style
waistHeight: { pct: 100, min: 0, max: 100 },
lengthBonus: { pct: 2, min: -20, max: 10 },
crotchDrop: { pct: 2, min: 0, max: 15 },
fitKnee: { bool: false },
// Advanced
legBalance: { pct: 57.5, min: 52.5, max: 62.5 },
crossSeamCurveStart: { pct: 85, min: 60, max: 100 },
crossSeamCurveBend: { pct: 65, min: 45, max: 85 },
crossSeamCurveAngle: { deg: 12, min: 0, max: 20 },
crotchSeamCurveStart: { pct: 80, min: 60, max: 95 },
crotchSeamCurveBend: { pct: 80, min: 45, max: 100 },
crotchSeamCurveAngle: { deg: 25, min: 0, max: 35 },
waistBalance: { pct: 60, min: 30, max: 90 },
grainlinePosition: { pct: 45, min: 30, max: 60 },
waistbandWidth: { pct: 3, min: 1, max: 6, snap: elastics, ...pctBasedOn('waistToFloor') },
},
}

View file

@ -1,4 +1,8 @@
export default (part) => {
import { pctBasedOn } from '@freesewing/core'
import { elastics } from '@freesewing/snapseries'
import { pluginBundle } from '@freesewing/plugin-bundle'
function titanBack(part) {
/*
* Helper method to draw the inseam path
*/
@ -492,3 +496,58 @@ export default (part) => {
return part
}
export const back = {
name: 'titan.back',
plugins: [pluginBundle],
measurements: [
'crossSeam',
'crossSeamFront',
'knee',
'seat',
'seatBack',
'waist',
'waistBack',
'waistToFloor',
'waistToKnee',
'waistToHips',
'waistToSeat',
'waistToUpperLeg',
],
options: {
// Constants
titanPaperless: true,
fitCrossSeam: true,
fitCrossSeamFront: true,
fitCrossSeamBack: true,
fitGuides: true,
// Fit
waistEase: { pct: 2, min: 0, max: 10, menu: 'fit' },
seatEase: { pct: 2, min: 0, max: 10, menu: 'fit' },
kneeEase: { pct: 6, min: 1, max: 25, menu: 'fit' },
// Style
waistHeight: { pct: 100, min: 0, max: 100, menu: 'style' },
lengthBonus: { pct: 2, min: -20, max: 10, menu: 'style' },
crotchDrop: { pct: 2, min: 0, max: 15, menu: 'style' },
fitKnee: { bool: false, menu: 'style' },
// Advanced
legBalance: { pct: 57.5, min: 52.5, max: 62.5, menu: 'advanced' },
crossSeamCurveStart: { pct: 85, min: 60, max: 100, menu: 'advanced' },
crossSeamCurveBend: { pct: 65, min: 45, max: 85, menu: 'advanced' },
crossSeamCurveAngle: { deg: 12, min: 0, max: 20, menu: 'advanced' },
crotchSeamCurveStart: { pct: 80, min: 60, max: 95, menu: 'advanced' },
crotchSeamCurveBend: { pct: 80, min: 45, max: 100, menu: 'advanced' },
crotchSeamCurveAngle: { deg: 25, min: 0, max: 35, menu: 'advanced' },
waistBalance: { pct: 60, min: 30, max: 90, menu: 'advanced' },
grainlinePosition: { pct: 45, min: 30, max: 60, menu: 'advanced' },
waistbandWidth: {
pct: 3,
min: 1,
max: 6,
snap: elastics,
...pctBasedOn('waistToFloor'),
menu: 'advanced',
},
},
draft: titanBack,
}

View file

@ -1,4 +1,6 @@
export default (part) => {
import { back } from './back.mjs'
function titanFront(part) {
/*
* Helper method to draw the inseam path
*/
@ -563,3 +565,9 @@ export default (part) => {
return part
}
export const front = {
name: 'titan.front',
after: back,
draft: titanFront,
}

View file

@ -1,19 +1,13 @@
import freesewing from '@freesewing/core'
import plugins from '@freesewing/plugin-bundle'
import config from '../config'
// Parts
import draftBack from './back'
import draftFront from './front'
import { Design } from '@freesewing/core'
import { data } from '../data.mjs'
import { back } from './back.mjs'
import { front } from './front.mjs'
// Create design
const Titan = new freesewing.Design(config, plugins)
// Attach draft methods to prototype
Titan.prototype.draftBack = (part) => draftBack(part)
Titan.prototype.draftFront = (part) => draftFront(part)
// Setup our new design
const Titan = new Design({
data,
parts: [back, front],
})
// Named exports
export { config, Titan }
// Default export
export default Titan
export { back, front, Titan }