Merge branch 'develop' into jane
This commit is contained in:
commit
b4a1216a5c
669 changed files with 41070 additions and 1029 deletions
|
@ -1167,6 +1167,33 @@
|
||||||
"contributions": [
|
"contributions": [
|
||||||
"doc"
|
"doc"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "karlnippoldt",
|
||||||
|
"name": "Karl Nippoldt",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/7821608?v=4",
|
||||||
|
"profile": "https://karlnippoldt.com",
|
||||||
|
"contributions": [
|
||||||
|
"doc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "RockerKitten",
|
||||||
|
"name": "Corey",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/84648053?v=4",
|
||||||
|
"profile": "https://github.com/RockerKitten",
|
||||||
|
"contributions": [
|
||||||
|
"question"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "GeniaHarrietBoeing",
|
||||||
|
"name": "Niabon",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/73827848?v=4",
|
||||||
|
"profile": "https://github.com/GeniaHarrietBoeing",
|
||||||
|
"contributions": [
|
||||||
|
"doc"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"skipCi": true,
|
"skipCi": true,
|
||||||
|
|
48
CHANGELOG.md
48
CHANGELOG.md
|
@ -9,8 +9,25 @@
|
||||||
|
|
||||||
- Always load plugin-bust due to its changes in how it handle conditionality.
|
- Always load plugin-bust due to its changes in how it handle conditionality.
|
||||||
|
|
||||||
|
### cathrin
|
||||||
|
|
||||||
|
#### Changed
|
||||||
|
|
||||||
|
- Allow negative values in backDrop option. Fixes
|
||||||
|
- Allow negative values for the frontRise options. Fixes
|
||||||
|
|
||||||
|
### charlie
|
||||||
|
|
||||||
|
#### Fixed
|
||||||
|
|
||||||
|
- Fix cut instructions for fly facing, only 1 to be cut. Fixes
|
||||||
|
|
||||||
### huey
|
### huey
|
||||||
|
|
||||||
|
#### Changed
|
||||||
|
|
||||||
|
- The lengthBonus option default was changed from 0% to 15%. Fixes
|
||||||
|
|
||||||
#### Fixed
|
#### Fixed
|
||||||
|
|
||||||
- Fixed an issue where ribbing height would distort the pocket under certain conditions. Fixes
|
- Fixed an issue where ribbing height would distort the pocket under certain conditions. Fixes
|
||||||
|
@ -23,6 +40,13 @@
|
||||||
|
|
||||||
- Add missing dimension id attributes
|
- Add missing dimension id attributes
|
||||||
|
|
||||||
|
### noble
|
||||||
|
|
||||||
|
#### Fixed
|
||||||
|
|
||||||
|
- Fix 'cutonfold' text for Noble's back part. Fixes
|
||||||
|
- Improve dart shaping. Fixes
|
||||||
|
|
||||||
### onyx
|
### onyx
|
||||||
|
|
||||||
#### Changed
|
#### Changed
|
||||||
|
@ -35,12 +59,30 @@
|
||||||
|
|
||||||
- Always load plugin-bust due to its changes in how it handle conditionality.
|
- Always load plugin-bust due to its changes in how it handle conditionality.
|
||||||
|
|
||||||
|
### simon
|
||||||
|
|
||||||
|
#### Changed
|
||||||
|
|
||||||
|
- Allow negative values for the buttonFreeLength option. Fixes
|
||||||
|
|
||||||
|
### simone
|
||||||
|
|
||||||
|
#### Fixed
|
||||||
|
|
||||||
|
- Added missing translation for various options
|
||||||
|
|
||||||
### tamiko
|
### tamiko
|
||||||
|
|
||||||
#### Changed
|
#### Changed
|
||||||
|
|
||||||
- Always load plugin-bust due to its changes in how it handle conditionality.
|
- Always load plugin-bust due to its changes in how it handle conditionality.
|
||||||
|
|
||||||
|
### teagan
|
||||||
|
|
||||||
|
#### Fixed
|
||||||
|
|
||||||
|
- Fix side seam when length is cropped. Fixes
|
||||||
|
|
||||||
### uma
|
### uma
|
||||||
|
|
||||||
#### Fixed
|
#### Fixed
|
||||||
|
@ -65,6 +107,12 @@
|
||||||
|
|
||||||
- The `withCondition` named export is deprecated and will always return true.
|
- The `withCondition` named export is deprecated and will always return true.
|
||||||
|
|
||||||
|
### core
|
||||||
|
|
||||||
|
#### Added
|
||||||
|
|
||||||
|
- The `Path.rotate()` method was added to the core API.
|
||||||
|
|
||||||
|
|
||||||
## 3.2.0 (2024-02-11)
|
## 3.2.0 (2024-02-11)
|
||||||
|
|
||||||
|
|
|
@ -29,143 +29,148 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cathyzoller"><img src="https://avatars.githubusercontent.com/u/2120275?v=4?s=100" width="100px;" alt="Cathy Zoller"/><br /><sub><b>Cathy Zoller</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=cathyzoller" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cathyzoller"><img src="https://avatars.githubusercontent.com/u/2120275?v=4?s=100" width="100px;" alt="Cathy Zoller"/><br /><sub><b>Cathy Zoller</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=cathyzoller" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Chantalbijoux"><img src="https://avatars.githubusercontent.com/u/39673694?v=4?s=100" width="100px;" alt="Chantal Lapointe"/><br /><sub><b>Chantal Lapointe</b></sub></a><br /><a href="#translation-Chantalbijoux" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Chantalbijoux"><img src="https://avatars.githubusercontent.com/u/39673694?v=4?s=100" width="100px;" alt="Chantal Lapointe"/><br /><sub><b>Chantal Lapointe</b></sub></a><br /><a href="#translation-Chantalbijoux" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RockerKitten"><img src="https://avatars.githubusercontent.com/u/84648053?v=4?s=100" width="100px;" alt="Corey"/><br /><sub><b>Corey</b></sub></a><br /><a href="#question-RockerKitten" title="Answering Questions">💬</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dpiquet"><img src="https://avatars.githubusercontent.com/u/4688628?v=4?s=100" width="100px;" alt="Damien PIQUET"/><br /><sub><b>Damien PIQUET</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=dpiquet" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dpiquet"><img src="https://avatars.githubusercontent.com/u/4688628?v=4?s=100" width="100px;" alt="Damien PIQUET"/><br /><sub><b>Damien PIQUET</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=dpiquet" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.darigovresearch.com/"><img src="https://avatars.githubusercontent.com/u/30328618?v=4?s=100" width="100px;" alt="Darigov Research"/><br /><sub><b>Darigov Research</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=darigovresearch" title="Documentation">📖</a> <a href="#ideas-darigovresearch" title="Ideas, Planning, & Feedback">🤔</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.darigovresearch.com/"><img src="https://avatars.githubusercontent.com/u/30328618?v=4?s=100" width="100px;" alt="Darigov Research"/><br /><sub><b>Darigov Research</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=darigovresearch" title="Documentation">📖</a> <a href="#ideas-darigovresearch" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/clegganator259"><img src="https://avatars.githubusercontent.com/u/3974250?v=4?s=100" width="100px;" alt="David Clegg"/><br /><sub><b>David Clegg</b></sub></a><br /><a href="#design-clegganator259" title="Design">🎨</a> <a href="https://github.com/freesewing/freesewing/commits?author=clegganator259" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/clegganator259"><img src="https://avatars.githubusercontent.com/u/3974250?v=4?s=100" width="100px;" alt="David Clegg"/><br /><sub><b>David Clegg</b></sub></a><br /><a href="#design-clegganator259" title="Design">🎨</a> <a href="https://github.com/freesewing/freesewing/commits?author=clegganator259" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ElenaFdR"><img src="https://avatars.githubusercontent.com/u/5113815?v=4?s=100" width="100px;" alt="Elena FdR"/><br /><sub><b>Elena FdR</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ElenaFdR" title="Documentation">📖</a> <a href="#blog-ElenaFdR" title="Blogposts">📝</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ElenaFdR"><img src="https://avatars.githubusercontent.com/u/5113815?v=4?s=100" width="100px;" alt="Elena FdR"/><br /><sub><b>Elena FdR</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ElenaFdR" title="Documentation">📖</a> <a href="#blog-ElenaFdR" title="Blogposts">📝</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://emmanuelnyachoke.com/"><img src="https://avatars.githubusercontent.com/u/1908926?v=4?s=100" width="100px;" alt="Emmanuel Nyachoke"/><br /><sub><b>Emmanuel Nyachoke</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://emmanuelnyachoke.com/"><img src="https://avatars.githubusercontent.com/u/1908926?v=4?s=100" width="100px;" alt="Emmanuel Nyachoke"/><br /><sub><b>Emmanuel Nyachoke</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://enochriese.com"><img src="https://avatars.githubusercontent.com/u/5298929?v=4?s=100" width="100px;" alt="Enoch Riese"/><br /><sub><b>Enoch Riese</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eriese" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://enochriese.com"><img src="https://avatars.githubusercontent.com/u/5298929?v=4?s=100" width="100px;" alt="Enoch Riese"/><br /><sub><b>Enoch Riese</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eriese" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/EvEkSwed"><img src="https://avatars.githubusercontent.com/u/39723451?v=4?s=100" width="100px;" alt="EvEkSwed"/><br /><sub><b>EvEkSwed</b></sub></a><br /><a href="#translation-EvEkSwed" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/EvEkSwed"><img src="https://avatars.githubusercontent.com/u/39723451?v=4?s=100" width="100px;" alt="EvEkSwed"/><br /><sub><b>EvEkSwed</b></sub></a><br /><a href="#translation-EvEkSwed" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fantastik-Maman"><img src="https://avatars.githubusercontent.com/u/39785382?v=4?s=100" width="100px;" alt="Fantastik-Maman"/><br /><sub><b>Fantastik-Maman</b></sub></a><br /><a href="#translation-Fantastik-Maman" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fantastik-Maman"><img src="https://avatars.githubusercontent.com/u/39785382?v=4?s=100" width="100px;" alt="Fantastik-Maman"/><br /><sub><b>Fantastik-Maman</b></sub></a><br /><a href="#translation-Fantastik-Maman" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.forresto.com/"><img src="https://avatars.githubusercontent.com/u/395307?v=4?s=100" width="100px;" alt="Forrest O."/><br /><sub><b>Forrest O.</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=forresto" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.forresto.com/"><img src="https://avatars.githubusercontent.com/u/395307?v=4?s=100" width="100px;" alt="Forrest O."/><br /><sub><b>Forrest O.</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=forresto" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fmatray"><img src="https://avatars.githubusercontent.com/u/8267716?v=4?s=100" width="100px;" alt="Frédéric"/><br /><sub><b>Frédéric</b></sub></a><br /><a href="#translation-fmatray" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fmatray"><img src="https://avatars.githubusercontent.com/u/8267716?v=4?s=100" width="100px;" alt="Frédéric"/><br /><sub><b>Frédéric</b></sub></a><br /><a href="#translation-fmatray" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/glennfmatthews/"><img src="https://avatars.githubusercontent.com/u/5603551?v=4?s=100" width="100px;" alt="Glenn Matthews"/><br /><sub><b>Glenn Matthews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=glennmatthews" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/glennfmatthews/"><img src="https://avatars.githubusercontent.com/u/5603551?v=4?s=100" width="100px;" alt="Glenn Matthews"/><br /><sub><b>Glenn Matthews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=glennmatthews" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://greg.technology/"><img src="https://avatars.githubusercontent.com/u/1017304?v=4?s=100" width="100px;" alt="Greg Sadetsky"/><br /><sub><b>Greg Sadetsky</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=gregsadetsky" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://greg.technology/"><img src="https://avatars.githubusercontent.com/u/1017304?v=4?s=100" width="100px;" alt="Greg Sadetsky"/><br /><sub><b>Greg Sadetsky</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=gregsadetsky" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Himanshu1801"><img src="https://avatars.githubusercontent.com/u/78968566?v=4?s=100" width="100px;" alt="Himanshu Singh"/><br /><sub><b>Himanshu Singh</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Himanshu1801" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Himanshu1801"><img src="https://avatars.githubusercontent.com/u/78968566?v=4?s=100" width="100px;" alt="Himanshu Singh"/><br /><sub><b>Himanshu Singh</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Himanshu1801" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://kirby.zone"><img src="https://avatars.githubusercontent.com/u/75245963?v=4?s=100" width="100px;" alt="Igor Couto"/><br /><sub><b>Igor Couto</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aiocouto" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://kirby.zone"><img src="https://avatars.githubusercontent.com/u/75245963?v=4?s=100" width="100px;" alt="Igor Couto"/><br /><sub><b>Igor Couto</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aiocouto" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt="Ikko Ashimine"/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eltociear" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt="Ikko Ashimine"/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eltociear" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Irapeke"><img src="https://avatars.githubusercontent.com/u/39604334?v=4?s=100" width="100px;" alt="Irapeke"/><br /><sub><b>Irapeke</b></sub></a><br /><a href="#translation-Irapeke" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Irapeke"><img src="https://avatars.githubusercontent.com/u/39604334?v=4?s=100" width="100px;" alt="Irapeke"/><br /><sub><b>Irapeke</b></sub></a><br /><a href="#translation-Irapeke" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ibek"><img src="https://avatars.githubusercontent.com/u/1140579?v=4?s=100" width="100px;" alt="Ivo Bek"/><br /><sub><b>Ivo Bek</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ibek" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ibek"><img src="https://avatars.githubusercontent.com/u/1140579?v=4?s=100" width="100px;" alt="Ivo Bek"/><br /><sub><b>Ivo Bek</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ibek" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jsawo"><img src="https://avatars.githubusercontent.com/u/1294706?v=4?s=100" width="100px;" alt="Jacek Sawoszczuk"/><br /><sub><b>Jacek Sawoszczuk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jsawo" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jsawo"><img src="https://avatars.githubusercontent.com/u/1294706?v=4?s=100" width="100px;" alt="Jacek Sawoszczuk"/><br /><sub><b>Jacek Sawoszczuk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jsawo" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jgfichte"><img src="https://avatars.githubusercontent.com/u/1787162?v=4?s=100" width="100px;" alt="Jason Williams"/><br /><sub><b>Jason Williams</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jgfichte" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jgfichte"><img src="https://avatars.githubusercontent.com/u/1787162?v=4?s=100" width="100px;" alt="Jason Williams"/><br /><sub><b>Jason Williams</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jgfichte" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jejacks0n"><img src="https://avatars.githubusercontent.com/u/13765?v=4?s=100" width="100px;" alt="Jeremy Jackson"/><br /><sub><b>Jeremy Jackson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jejacks0n" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jejacks0n"><img src="https://avatars.githubusercontent.com/u/13765?v=4?s=100" width="100px;" alt="Jeremy Jackson"/><br /><sub><b>Jeremy Jackson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jejacks0n" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://jeroenhoek.nl"><img src="https://avatars.githubusercontent.com/u/683699?v=4?s=100" width="100px;" alt="Jeroen Hoek"/><br /><sub><b>Jeroen Hoek</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jdhoek" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://jeroenhoek.nl"><img src="https://avatars.githubusercontent.com/u/683699?v=4?s=100" width="100px;" alt="Jeroen Hoek"/><br /><sub><b>Jeroen Hoek</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jdhoek" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joeschofield0"><img src="https://avatars.githubusercontent.com/u/47668691?v=4?s=100" width="100px;" alt="Joe Schofield"/><br /><sub><b>Joe Schofield</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joeschofield0" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joeschofield0"><img src="https://avatars.githubusercontent.com/u/47668691?v=4?s=100" width="100px;" alt="Joe Schofield"/><br /><sub><b>Joe Schofield</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joeschofield0" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Joebidido"><img src="https://avatars.githubusercontent.com/u/39796210?v=4?s=100" width="100px;" alt="Joebidido"/><br /><sub><b>Joebidido</b></sub></a><br /><a href="#translation-Joebidido" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Joebidido"><img src="https://avatars.githubusercontent.com/u/39796210?v=4?s=100" width="100px;" alt="Joebidido"/><br /><sub><b>Joebidido</b></sub></a><br /><a href="#translation-Joebidido" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/HaasJona"><img src="https://avatars.githubusercontent.com/u/4310707?v=4?s=100" width="100px;" alt="Jonathan Haas"/><br /><sub><b>Jonathan Haas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=HaasJona" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/HaasJona"><img src="https://avatars.githubusercontent.com/u/4310707?v=4?s=100" width="100px;" alt="Jonathan Haas"/><br /><sub><b>Jonathan Haas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=HaasJona" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://joost.at/"><img src="https://avatars.githubusercontent.com/u/1708494?v=4?s=100" width="100px;" alt="Joost De Cock"/><br /><sub><b>Joost De Cock</b></sub></a><br /><a href="#maintenance-joostdecock" title="Maintenance">🚧</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://joost.at/"><img src="https://avatars.githubusercontent.com/u/1708494?v=4?s=100" width="100px;" alt="Joost De Cock"/><br /><sub><b>Joost De Cock</b></sub></a><br /><a href="#maintenance-joostdecock" title="Maintenance">🚧</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joshessman"><img src="https://avatars.githubusercontent.com/u/9941074?v=4?s=100" width="100px;" alt="Josh Essman"/><br /><sub><b>Josh Essman</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joshessman" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joshessman"><img src="https://avatars.githubusercontent.com/u/9941074?v=4?s=100" width="100px;" alt="Josh Essman"/><br /><sub><b>Josh Essman</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joshessman" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jpmunic"><img src="https://avatars.githubusercontent.com/u/13474972?v=4?s=100" width="100px;" alt="Josh Munic"/><br /><sub><b>Josh Munic</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Ajpmunic" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jpmunic"><img src="https://avatars.githubusercontent.com/u/13474972?v=4?s=100" width="100px;" alt="Josh Munic"/><br /><sub><b>Josh Munic</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Ajpmunic" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://www.earth.li/~kake/"><img src="https://avatars.githubusercontent.com/u/1956810?v=4?s=100" width="100px;" alt="Kake"/><br /><sub><b>Kake</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=KakeLP" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://www.earth.li/~kake/"><img src="https://avatars.githubusercontent.com/u/1956810?v=4?s=100" width="100px;" alt="Kake"/><br /><sub><b>Kake</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=KakeLP" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/kapunahele"><img src="https://avatars.githubusercontent.com/u/4116963?v=4?s=100" width="100px;" alt="Kapunahele Wong"/><br /><sub><b>Kapunahele Wong</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kapunahelewong" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/kapunahele"><img src="https://avatars.githubusercontent.com/u/4116963?v=4?s=100" width="100px;" alt="Kapunahele Wong"/><br /><sub><b>Kapunahele Wong</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kapunahelewong" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tangerineshark"><img src="https://avatars.githubusercontent.com/u/70777269?v=4?s=100" width="100px;" alt="Karen"/><br /><sub><b>Karen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=tangerineshark" title="Documentation">📖</a> <a href="#eventOrganizing-tangerineshark" title="Event Organizing">📋</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tangerineshark"><img src="https://avatars.githubusercontent.com/u/70777269?v=4?s=100" width="100px;" alt="Karen"/><br /><sub><b>Karen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=tangerineshark" title="Documentation">📖</a> <a href="#eventOrganizing-tangerineshark" title="Event Organizing">📋</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://karlnippoldt.com"><img src="https://avatars.githubusercontent.com/u/7821608?v=4?s=100" width="100px;" alt="Karl Nippoldt"/><br /><sub><b>Karl Nippoldt</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=karlnippoldt" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mcgnly"><img src="https://avatars.githubusercontent.com/u/5653631?v=4?s=100" width="100px;" alt="Katie McGinley"/><br /><sub><b>Katie McGinley</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=mcgnly" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mcgnly"><img src="https://avatars.githubusercontent.com/u/5653631?v=4?s=100" width="100px;" alt="Katie McGinley"/><br /><sub><b>Katie McGinley</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=mcgnly" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://www.kieranklaassen.com/"><img src="https://avatars.githubusercontent.com/u/209089?v=4?s=100" width="100px;" alt="Kieran Klaassen"/><br /><sub><b>Kieran Klaassen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kieranklaassen" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Kittycatou"><img src="https://avatars.githubusercontent.com/u/48165583?v=4?s=100" width="100px;" alt="Kittycatou"/><br /><sub><b>Kittycatou</b></sub></a><br /><a href="#translation-Kittycatou" title="Translation">🌍</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="http://www.kieranklaassen.com/"><img src="https://avatars.githubusercontent.com/u/209089?v=4?s=100" width="100px;" alt="Kieran Klaassen"/><br /><sub><b>Kieran Klaassen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kieranklaassen" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Kittycatou"><img src="https://avatars.githubusercontent.com/u/48165583?v=4?s=100" width="100px;" alt="Kittycatou"/><br /><sub><b>Kittycatou</b></sub></a><br /><a href="#translation-Kittycatou" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.krishoward.org/"><img src="https://avatars.githubusercontent.com/u/5946286?v=4?s=100" width="100px;" alt="Kris"/><br /><sub><b>Kris</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=web-goddess" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.krishoward.org/"><img src="https://avatars.githubusercontent.com/u/5946286?v=4?s=100" width="100px;" alt="Kris"/><br /><sub><b>Kris</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=web-goddess" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kristinruben"><img src="https://avatars.githubusercontent.com/u/17237479?v=4?s=100" width="100px;" alt="Kristin Ruben"/><br /><sub><b>Kristin Ruben</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kristinruben" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kristinruben"><img src="https://avatars.githubusercontent.com/u/17237479?v=4?s=100" width="100px;" alt="Kristin Ruben"/><br /><sub><b>Kristin Ruben</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kristinruben" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/compilin"><img src="https://avatars.githubusercontent.com/u/40794281?v=4?s=100" width="100px;" alt="Lin"/><br /><sub><b>Lin</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=compilin" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/compilin"><img src="https://avatars.githubusercontent.com/u/40794281?v=4?s=100" width="100px;" alt="Lin"/><br /><sub><b>Lin</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=compilin" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Loudepeuter"><img src="https://avatars.githubusercontent.com/u/38081954?v=4?s=100" width="100px;" alt="Loudepeuter"/><br /><sub><b>Loudepeuter</b></sub></a><br /><a href="#translation-Loudepeuter" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Loudepeuter"><img src="https://avatars.githubusercontent.com/u/38081954?v=4?s=100" width="100px;" alt="Loudepeuter"/><br /><sub><b>Loudepeuter</b></sub></a><br /><a href="#translation-Loudepeuter" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lucibytes"><img src="https://avatars.githubusercontent.com/u/77203781?v=4?s=100" width="100px;" alt="Lucian"/><br /><sub><b>Lucian</b></sub></a><br /><a href="#eventOrganizing-lucibytes" title="Event Organizing">📋</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lucibytes"><img src="https://avatars.githubusercontent.com/u/77203781?v=4?s=100" width="100px;" alt="Lucian"/><br /><sub><b>Lucian</b></sub></a><br /><a href="#eventOrganizing-lucibytes" title="Event Organizing">📋</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/luizfzs"><img src="https://avatars.githubusercontent.com/u/6039675?v=4?s=100" width="100px;" alt="Luiz Saggioro"/><br /><sub><b>Luiz Saggioro</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=luizfzs" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MA-TATAS"><img src="https://avatars.githubusercontent.com/u/125549564?v=4?s=100" width="100px;" alt="MA-TATAS"/><br /><sub><b>MA-TATAS</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=MA-TATAS" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/luizfzs"><img src="https://avatars.githubusercontent.com/u/6039675?v=4?s=100" width="100px;" alt="Luiz Saggioro"/><br /><sub><b>Luiz Saggioro</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=luizfzs" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MA-TATAS"><img src="https://avatars.githubusercontent.com/u/125549564?v=4?s=100" width="100px;" alt="MA-TATAS"/><br /><sub><b>MA-TATAS</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=MA-TATAS" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/manufakturedelweiss"><img src="https://avatars.githubusercontent.com/u/38063391?v=4?s=100" width="100px;" alt="Marcus"/><br /><sub><b>Marcus</b></sub></a><br /><a href="#translation-manufakturedelweiss" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/manufakturedelweiss"><img src="https://avatars.githubusercontent.com/u/38063391?v=4?s=100" width="100px;" alt="Marcus"/><br /><sub><b>Marcus</b></sub></a><br /><a href="#translation-manufakturedelweiss" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/martintribo"><img src="https://avatars.githubusercontent.com/u/1613442?v=4?s=100" width="100px;" alt="Martin Tribo"/><br /><sub><b>Martin Tribo</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=martintribo" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/martintribo"><img src="https://avatars.githubusercontent.com/u/1613442?v=4?s=100" width="100px;" alt="Martin Tribo"/><br /><sub><b>Martin Tribo</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=martintribo" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nadege"><img src="https://avatars.githubusercontent.com/u/3792171?v=4?s=100" width="100px;" alt="Nadege Michel"/><br /><sub><b>Nadege Michel</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Tests">⚠️</a> <a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nadege"><img src="https://avatars.githubusercontent.com/u/3792171?v=4?s=100" width="100px;" alt="Nadege Michel"/><br /><sub><b>Nadege Michel</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Tests">⚠️</a> <a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nataliasayang"><img src="https://avatars.githubusercontent.com/u/48160791?v=4?s=100" width="100px;" alt="Natalia"/><br /><sub><b>Natalia</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nataliasayang" title="Code">💻</a> <a href="#design-nataliasayang" title="Design">🎨</a> <a href="#blog-nataliasayang" title="Blogposts">📝</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nataliasayang"><img src="https://avatars.githubusercontent.com/u/48160791?v=4?s=100" width="100px;" alt="Natalia"/><br /><sub><b>Natalia</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nataliasayang" title="Code">💻</a> <a href="#design-nataliasayang" title="Design">🎨</a> <a href="#blog-nataliasayang" title="Blogposts">📝</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://yergler.net/"><img src="https://avatars.githubusercontent.com/u/510875?v=4?s=100" width="100px;" alt="Nathan Yergler"/><br /><sub><b>Nathan Yergler</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nyergler" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://yergler.net/"><img src="https://avatars.githubusercontent.com/u/510875?v=4?s=100" width="100px;" alt="Nathan Yergler"/><br /><sub><b>Nathan Yergler</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nyergler" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nicholasdower"><img src="https://avatars.githubusercontent.com/u/9117775?v=4?s=100" width="100px;" alt="Nick Dower"/><br /><sub><b>Nick Dower</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/issues?q=author%3Anicholasdower" title="Bug reports">🐛</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nchilada"><img src="https://avatars.githubusercontent.com/u/692925?v=4?s=100" width="100px;" alt="Nikhil Chelliah"/><br /><sub><b>Nikhil Chelliah</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nchilada" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/GeniaHarrietBoeing"><img src="https://avatars.githubusercontent.com/u/73827848?v=4?s=100" width="100px;" alt="Niabon"/><br /><sub><b>Niabon</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=GeniaHarrietBoeing" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nicholasdower"><img src="https://avatars.githubusercontent.com/u/9117775?v=4?s=100" width="100px;" alt="Nick Dower"/><br /><sub><b>Nick Dower</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/issues?q=author%3Anicholasdower" title="Bug reports">🐛</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nchilada"><img src="https://avatars.githubusercontent.com/u/692925?v=4?s=100" width="100px;" alt="Nikhil Chelliah"/><br /><sub><b>Nikhil Chelliah</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nchilada" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/OysteinHoiby"><img src="https://avatars.githubusercontent.com/u/49735055?v=4?s=100" width="100px;" alt="OysteinHoiby"/><br /><sub><b>OysteinHoiby</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=OysteinHoiby" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/OysteinHoiby"><img src="https://avatars.githubusercontent.com/u/49735055?v=4?s=100" width="100px;" alt="OysteinHoiby"/><br /><sub><b>OysteinHoiby</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=OysteinHoiby" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://pat.forringer.com/"><img src="https://avatars.githubusercontent.com/u/136456?v=4?s=100" width="100px;" alt="Patrick Forringer"/><br /><sub><b>Patrick Forringer</b></sub></a><br /><a href="#plugin-destos" title="Plugin/utility libraries">🔌</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://pat.forringer.com/"><img src="https://avatars.githubusercontent.com/u/136456?v=4?s=100" width="100px;" alt="Patrick Forringer"/><br /><sub><b>Patrick Forringer</b></sub></a><br /><a href="#plugin-destos" title="Plugin/utility libraries">🔌</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://pd75.github.io/"><img src="https://avatars.githubusercontent.com/u/10294795?v=4?s=100" width="100px;" alt="Paul"/><br /><sub><b>Paul</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=PD75" title="Documentation">📖</a> <a href="#blog-PD75" title="Blogposts">📝</a> <a href="#translation-PD75" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://pd75.github.io/"><img src="https://avatars.githubusercontent.com/u/10294795?v=4?s=100" width="100px;" alt="Paul"/><br /><sub><b>Paul</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=PD75" title="Documentation">📖</a> <a href="#blog-PD75" title="Blogposts">📝</a> <a href="#translation-PD75" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pvidas"><img src="https://avatars.githubusercontent.com/u/38463064?v=4?s=100" width="100px;" alt="Paula Vidas"/><br /><sub><b>Paula Vidas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=pvidas" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pvidas"><img src="https://avatars.githubusercontent.com/u/38463064?v=4?s=100" width="100px;" alt="Paula Vidas"/><br /><sub><b>Paula Vidas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=pvidas" title="Code">💻</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/phillipthelen"><img src="https://avatars.githubusercontent.com/u/298062?v=4?s=100" width="100px;" alt="Phillip Thelen"/><br /><sub><b>Phillip Thelen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=phillipthelen" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/phillipthelen"><img src="https://avatars.githubusercontent.com/u/298062?v=4?s=100" width="100px;" alt="Phillip Thelen"/><br /><sub><b>Phillip Thelen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=phillipthelen" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Pixieish"><img src="https://avatars.githubusercontent.com/u/32991415?v=4?s=100" width="100px;" alt="Pixieish"/><br /><sub><b>Pixieish</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Pixieish" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Pixieish"><img src="https://avatars.githubusercontent.com/u/32991415?v=4?s=100" width="100px;" alt="Pixieish"/><br /><sub><b>Pixieish</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Pixieish" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.uza.be/persoon/prof-dr-sorcha-ni-dhubhghaill"><img src="https://avatars.githubusercontent.com/u/30624634?v=4?s=100" width="100px;" alt="Prof. dr. Sorcha Ní Dhubhghaill"/><br /><sub><b>Prof. dr. Sorcha Ní Dhubhghaill</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sorchanidhubhghaill" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.uza.be/persoon/prof-dr-sorcha-ni-dhubhghaill"><img src="https://avatars.githubusercontent.com/u/30624634?v=4?s=100" width="100px;" alt="Prof. dr. Sorcha Ní Dhubhghaill"/><br /><sub><b>Prof. dr. Sorcha Ní Dhubhghaill</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sorchanidhubhghaill" title="Documentation">📖</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/QuentinFelix"><img src="https://avatars.githubusercontent.com/u/5288091?v=4?s=100" width="100px;" alt="Quentin FELIX"/><br /><sub><b>Quentin FELIX</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=QuentinFelix" title="Code">💻</a> <a href="#design-QuentinFelix" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/QuentinFelix"><img src="https://avatars.githubusercontent.com/u/5288091?v=4?s=100" width="100px;" alt="Quentin FELIX"/><br /><sub><b>Quentin FELIX</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=QuentinFelix" title="Code">💻</a> <a href="#design-QuentinFelix" title="Design">🎨</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://rachel.ostic.ca"><img src="https://avatars.githubusercontent.com/u/65781290?v=4?s=100" width="100px;" alt="Rachel Ostic"/><br /><sub><b>Rachel Ostic</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=rachelostic" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://rachel.ostic.ca"><img src="https://avatars.githubusercontent.com/u/65781290?v=4?s=100" width="100px;" alt="Rachel Ostic"/><br /><sub><b>Rachel Ostic</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=rachelostic" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RikHekker"><img src="https://avatars.githubusercontent.com/u/31843274?v=4?s=100" width="100px;" alt="Rik Hekker"/><br /><sub><b>Rik Hekker</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ARikHekker" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RikHekker"><img src="https://avatars.githubusercontent.com/u/31843274?v=4?s=100" width="100px;" alt="Rik Hekker"/><br /><sub><b>Rik Hekker</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ARikHekker" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://resume.livingston-gray.com/faq.html"><img src="https://avatars.githubusercontent.com/u/6462?v=4?s=100" width="100px;" alt="Sam Livingston-Gray"/><br /><sub><b>Sam Livingston-Gray</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=geeksam" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://resume.livingston-gray.com/faq.html"><img src="https://avatars.githubusercontent.com/u/6462?v=4?s=100" width="100px;" alt="Sam Livingston-Gray"/><br /><sub><b>Sam Livingston-Gray</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=geeksam" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sannek"><img src="https://avatars.githubusercontent.com/u/17491062?v=4?s=100" width="100px;" alt="Sanne"/><br /><sub><b>Sanne</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sannek"><img src="https://avatars.githubusercontent.com/u/17491062?v=4?s=100" width="100px;" alt="Sanne"/><br /><sub><b>Sanne</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Tyrannogina"><img src="https://avatars.githubusercontent.com/u/19556565?v=4?s=100" width="100px;" alt="Sara Latorre"/><br /><sub><b>Sara Latorre</b></sub></a><br /><a href="#translation-Tyrannogina" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Tyrannogina"><img src="https://avatars.githubusercontent.com/u/19556565?v=4?s=100" width="100px;" alt="Sara Latorre"/><br /><sub><b>Sara Latorre</b></sub></a><br /><a href="#translation-Tyrannogina" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SeaZeeZee"><img src="https://avatars.githubusercontent.com/u/86711383?v=4?s=100" width="100px;" alt="SeaZeeZee"/><br /><sub><b>SeaZeeZee</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SeaZeeZee"><img src="https://avatars.githubusercontent.com/u/86711383?v=4?s=100" width="100px;" alt="SeaZeeZee"/><br /><sub><b>SeaZeeZee</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Code">💻</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SimonbJohnson"><img src="https://avatars.githubusercontent.com/u/2110742?v=4?s=100" width="100px;" alt="SimonbJohnson"/><br /><sub><b>SimonbJohnson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ASimonbJohnson" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SimonbJohnson"><img src="https://avatars.githubusercontent.com/u/2110742?v=4?s=100" width="100px;" alt="SimonbJohnson"/><br /><sub><b>SimonbJohnson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ASimonbJohnson" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SirCharlotte"><img src="https://avatars.githubusercontent.com/u/63847870?v=4?s=100" width="100px;" alt="SirCharlotte"/><br /><sub><b>SirCharlotte</b></sub></a><br /><a href="#translation-SirCharlotte" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SirCharlotte"><img src="https://avatars.githubusercontent.com/u/63847870?v=4?s=100" width="100px;" alt="SirCharlotte"/><br /><sub><b>SirCharlotte</b></sub></a><br /><a href="#translation-SirCharlotte" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.instagram.com/celine_mge/"><img src="https://avatars.githubusercontent.com/u/57619777?v=4?s=100" width="100px;" alt="Slylele"/><br /><sub><b>Slylele</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Slylele" title="Documentation">📖</a> <a href="#translation-Slylele" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.instagram.com/celine_mge/"><img src="https://avatars.githubusercontent.com/u/57619777?v=4?s=100" width="100px;" alt="Slylele"/><br /><sub><b>Slylele</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Slylele" title="Documentation">📖</a> <a href="#translation-Slylele" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Soazillon"><img src="https://avatars.githubusercontent.com/u/40845940?v=4?s=100" width="100px;" alt="Soazillon"/><br /><sub><b>Soazillon</b></sub></a><br /><a href="#translation-Soazillon" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Soazillon"><img src="https://avatars.githubusercontent.com/u/40845940?v=4?s=100" width="100px;" alt="Soazillon"/><br /><sub><b>Soazillon</b></sub></a><br /><a href="#translation-Soazillon" title="Translation">🌍</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sohamtembhurne"><img src="https://avatars.githubusercontent.com/u/82658685?v=4?s=100" width="100px;" alt="Soham Tembhurne"/><br /><sub><b>Soham Tembhurne</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sohamtembhurne" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sohamtembhurne"><img src="https://avatars.githubusercontent.com/u/82658685?v=4?s=100" width="100px;" alt="Soham Tembhurne"/><br /><sub><b>Soham Tembhurne</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sohamtembhurne" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SoneaTheBest"><img src="https://avatars.githubusercontent.com/u/64635425?v=4?s=100" width="100px;" alt="SoneaTheBest"/><br /><sub><b>SoneaTheBest</b></sub></a><br /><a href="#translation-SoneaTheBest" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SoneaTheBest"><img src="https://avatars.githubusercontent.com/u/64635425?v=4?s=100" width="100px;" alt="SoneaTheBest"/><br /><sub><b>SoneaTheBest</b></sub></a><br /><a href="#translation-SoneaTheBest" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.sophiah.gay/"><img src="https://avatars.githubusercontent.com/u/10786212?v=4?s=100" width="100px;" alt="Sophia"/><br /><sub><b>Sophia</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=SophiaH67" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.sophiah.gay/"><img src="https://avatars.githubusercontent.com/u/10786212?v=4?s=100" width="100px;" alt="Sophia"/><br /><sub><b>Sophia</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=SophiaH67" title="Code">💻</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://metafly.info/"><img src="https://avatars.githubusercontent.com/u/961256?v=4?s=100" width="100px;" alt="Stefan Sydow"/><br /><sub><b>Stefan Sydow</b></sub></a><br /><a href="#translation-stsydow" title="Translation">🌍</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://metafly.info/"><img src="https://avatars.githubusercontent.com/u/961256?v=4?s=100" width="100px;" alt="Stefan Sydow"/><br /><sub><b>Stefan Sydow</b></sub></a><br /><a href="#translation-stsydow" title="Translation">🌍</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://stefanocislaghi.com"><img src="https://avatars.githubusercontent.com/u/1659414?v=4?s=100" width="100px;" alt="Stefano"/><br /><sub><b>Stefano</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=LunaticMuch" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://stefanocislaghi.com"><img src="https://avatars.githubusercontent.com/u/1659414?v=4?s=100" width="100px;" alt="Stefano"/><br /><sub><b>Stefano</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=LunaticMuch" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/biswassushmita947"><img src="https://avatars.githubusercontent.com/u/145688707?v=4?s=100" width="100px;" alt="Sushmita Biswas"/><br /><sub><b>Sushmita Biswas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=biswassushmita947" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/biswassushmita947"><img src="https://avatars.githubusercontent.com/u/145688707?v=4?s=100" width="100px;" alt="Sushmita Biswas"/><br /><sub><b>Sushmita Biswas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=biswassushmita947" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TheTanay902"><img src="https://avatars.githubusercontent.com/u/84577440?v=4?s=100" width="100px;" alt="Tanay Toshniwal"/><br /><sub><b>Tanay Toshniwal</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=TheTanay902" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TheTanay902"><img src="https://avatars.githubusercontent.com/u/84577440?v=4?s=100" width="100px;" alt="Tanay Toshniwal"/><br /><sub><b>Tanay Toshniwal</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=TheTanay902" title="Code">💻</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/trentonTrama"><img src="https://avatars.githubusercontent.com/u/41126812?v=4?s=100" width="100px;" alt="Trent Trama"/><br /><sub><b>Trent Trama</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=trentonTrama" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/trentonTrama"><img src="https://avatars.githubusercontent.com/u/41126812?v=4?s=100" width="100px;" alt="Trent Trama"/><br /><sub><b>Trent Trama</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=trentonTrama" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TriploidTree"><img src="https://avatars.githubusercontent.com/u/4170521?v=4?s=100" width="100px;" alt="Tríona"/><br /><sub><b>Tríona</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=TriploidTree" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TriploidTree"><img src="https://avatars.githubusercontent.com/u/4170521?v=4?s=100" width="100px;" alt="Tríona"/><br /><sub><b>Tríona</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=TriploidTree" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/theUnmutual"><img src="https://avatars.githubusercontent.com/u/22374635?v=4?s=100" width="100px;" alt="Unmutual"/><br /><sub><b>Unmutual</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=theUnmutual" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/theUnmutual"><img src="https://avatars.githubusercontent.com/u/22374635?v=4?s=100" width="100px;" alt="Unmutual"/><br /><sub><b>Unmutual</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=theUnmutual" title="Documentation">📖</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ArcticCoder"><img src="https://avatars.githubusercontent.com/u/39151688?v=4?s=100" width="100px;" alt="Vili Sinervä"/><br /><sub><b>Vili Sinervä</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ArcticCoder" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ArcticCoder"><img src="https://avatars.githubusercontent.com/u/39151688?v=4?s=100" width="100px;" alt="Vili Sinervä"/><br /><sub><b>Vili Sinervä</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ArcticCoder" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/VSinerva"><img src="https://avatars.githubusercontent.com/u/39151688?v=4?s=100" width="100px;" alt="Vili Sinervä"/><br /><sub><b>Vili Sinervä</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=VSinerva" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/VSinerva"><img src="https://avatars.githubusercontent.com/u/39151688?v=4?s=100" width="100px;" alt="Vili Sinervä"/><br /><sub><b>Vili Sinervä</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=VSinerva" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/woutervdub"><img src="https://avatars.githubusercontent.com/u/24414629?v=4?s=100" width="100px;" alt="Wouter van Wageningen"/><br /><sub><b>Wouter van Wageningen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woutervdub" title="Code">💻</a> <a href="#design-woutervdub" title="Design">🎨</a> <a href="#tool-woutervdub" title="Tools">🔧</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/woutervdub"><img src="https://avatars.githubusercontent.com/u/24414629?v=4?s=100" width="100px;" alt="Wouter van Wageningen"/><br /><sub><b>Wouter van Wageningen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woutervdub" title="Code">💻</a> <a href="#design-woutervdub" title="Design">🎨</a> <a href="#tool-woutervdub" title="Tools">🔧</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Yash-Ambekar"><img src="https://avatars.githubusercontent.com/u/96481913?v=4?s=100" width="100px;" alt="Yash Anil Ambekar"/><br /><sub><b>Yash Anil Ambekar</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Yash-Ambekar" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Yash-Ambekar"><img src="https://avatars.githubusercontent.com/u/96481913?v=4?s=100" width="100px;" alt="Yash Anil Ambekar"/><br /><sub><b>Yash Anil Ambekar</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Yash-Ambekar" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/amysews"><img src="https://avatars.githubusercontent.com/u/25280778?v=4?s=100" width="100px;" alt="amysews"/><br /><sub><b>amysews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=amysews" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/amysews"><img src="https://avatars.githubusercontent.com/u/25280778?v=4?s=100" width="100px;" alt="amysews"/><br /><sub><b>amysews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=amysews" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/anna-puk"><img src="https://avatars.githubusercontent.com/u/100537439?v=4?s=100" width="100px;" alt="anna-puk"/><br /><sub><b>anna-puk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=anna-puk" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/anna-puk"><img src="https://avatars.githubusercontent.com/u/100537439?v=4?s=100" width="100px;" alt="anna-puk"/><br /><sub><b>anna-puk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=anna-puk" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/beautifulsummermoon"><img src="https://avatars.githubusercontent.com/u/40396388?v=4?s=100" width="100px;" alt="beautifulsummermoon"/><br /><sub><b>beautifulsummermoon</b></sub></a><br /><a href="#translation-beautifulsummermoon" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/beautifulsummermoon"><img src="https://avatars.githubusercontent.com/u/40396388?v=4?s=100" width="100px;" alt="beautifulsummermoon"/><br /><sub><b>beautifulsummermoon</b></sub></a><br /><a href="#translation-beautifulsummermoon" title="Translation">🌍</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/berce"><img src="https://avatars.githubusercontent.com/u/10439709?v=4?s=100" width="100px;" alt="berce"/><br /><sub><b>berce</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=berce" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/berce"><img src="https://avatars.githubusercontent.com/u/10439709?v=4?s=100" width="100px;" alt="berce"/><br /><sub><b>berce</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=berce" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/biou"><img src="https://avatars.githubusercontent.com/u/1340376?v=4?s=100" width="100px;" alt="biou"/><br /><sub><b>biou</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=biou" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/biou"><img src="https://avatars.githubusercontent.com/u/1340376?v=4?s=100" width="100px;" alt="biou"/><br /><sub><b>biou</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=biou" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bobgeorgethe3rd"><img src="https://avatars.githubusercontent.com/u/16866285?v=4?s=100" width="100px;" alt="bobgeorgethe3rd"/><br /><sub><b>bobgeorgethe3rd</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Documentation">📖</a> <a href="#design-bobgeorgethe3rd" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bobgeorgethe3rd"><img src="https://avatars.githubusercontent.com/u/16866285?v=4?s=100" width="100px;" alt="bobgeorgethe3rd"/><br /><sub><b>bobgeorgethe3rd</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Documentation">📖</a> <a href="#design-bobgeorgethe3rd" title="Design">🎨</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/brmlyklr"><img src="https://avatars.githubusercontent.com/u/22308713?v=4?s=100" width="100px;" alt="brmlyklr"/><br /><sub><b>brmlyklr</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=brmlyklr" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/brmlyklr"><img src="https://avatars.githubusercontent.com/u/22308713?v=4?s=100" width="100px;" alt="brmlyklr"/><br /><sub><b>brmlyklr</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=brmlyklr" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://www.chrisbarrett.fr"><img src="https://avatars.githubusercontent.com/u/2373249?v=4?s=100" width="100px;" alt="chri5b"/><br /><sub><b>chri5b</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Tests">⚠️</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://www.chrisbarrett.fr"><img src="https://avatars.githubusercontent.com/u/2373249?v=4?s=100" width="100px;" alt="chri5b"/><br /><sub><b>chri5b</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Tests">⚠️</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dingcycle"><img src="https://avatars.githubusercontent.com/u/1681985?v=4?s=100" width="100px;" alt="dingcycle"/><br /><sub><b>dingcycle</b></sub></a><br /><a href="#translation-dingcycle" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dingcycle"><img src="https://avatars.githubusercontent.com/u/1681985?v=4?s=100" width="100px;" alt="dingcycle"/><br /><sub><b>dingcycle</b></sub></a><br /><a href="#translation-dingcycle" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/drowned-in-books"><img src="https://avatars.githubusercontent.com/u/100040772?v=4?s=100" width="100px;" alt="drowned-in-books"/><br /><sub><b>drowned-in-books</b></sub></a><br /><a href="#question-drowned-in-books" title="Answering Questions">💬</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/drowned-in-books"><img src="https://avatars.githubusercontent.com/u/100040772?v=4?s=100" width="100px;" alt="drowned-in-books"/><br /><sub><b>drowned-in-books</b></sub></a><br /><a href="#question-drowned-in-books" title="Answering Questions">💬</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/econo202"><img src="https://avatars.githubusercontent.com/u/34138153?v=4?s=100" width="100px;" alt="econo202"/><br /><sub><b>econo202</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=econo202" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/econo202"><img src="https://avatars.githubusercontent.com/u/34138153?v=4?s=100" width="100px;" alt="econo202"/><br /><sub><b>econo202</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=econo202" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ericamattos"><img src="https://avatars.githubusercontent.com/u/4341417?v=4?s=100" width="100px;" alt="ericamattos"/><br /><sub><b>ericamattos</b></sub></a><br /><a href="#translation-ericamattos" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ericamattos"><img src="https://avatars.githubusercontent.com/u/4341417?v=4?s=100" width="100px;" alt="ericamattos"/><br /><sub><b>ericamattos</b></sub></a><br /><a href="#translation-ericamattos" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/evilrobotfromouterspace"><img src="https://avatars.githubusercontent.com/u/143673955?v=4?s=100" width="100px;" alt="evilrobotfromouterspace"/><br /><sub><b>evilrobotfromouterspace</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aevilrobotfromouterspace" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/evilrobotfromouterspace"><img src="https://avatars.githubusercontent.com/u/143673955?v=4?s=100" width="100px;" alt="evilrobotfromouterspace"/><br /><sub><b>evilrobotfromouterspace</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aevilrobotfromouterspace" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fightingrabbit"><img src="https://avatars.githubusercontent.com/u/25751445?v=4?s=100" width="100px;" alt="fightingrabbit"/><br /><sub><b>fightingrabbit</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=fightingrabbit" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fightingrabbit"><img src="https://avatars.githubusercontent.com/u/25751445?v=4?s=100" width="100px;" alt="fightingrabbit"/><br /><sub><b>fightingrabbit</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=fightingrabbit" title="Code">💻</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DocSpencer77"><img src="https://avatars.githubusercontent.com/u/43393580?v=4?s=100" width="100px;" alt="gaylyndie"/><br /><sub><b>gaylyndie</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=DocSpencer77" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DocSpencer77"><img src="https://avatars.githubusercontent.com/u/43393580?v=4?s=100" width="100px;" alt="gaylyndie"/><br /><sub><b>gaylyndie</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=DocSpencer77" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/grimlokason"><img src="https://avatars.githubusercontent.com/u/5112238?v=4?s=100" width="100px;" alt="grimlokason"/><br /><sub><b>grimlokason</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=grimlokason" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/grimlokason"><img src="https://avatars.githubusercontent.com/u/5112238?v=4?s=100" width="100px;" alt="grimlokason"/><br /><sub><b>grimlokason</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=grimlokason" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://weblog.redisdead.net"><img src="https://avatars.githubusercontent.com/u/6494414?v=4?s=100" width="100px;" alt="hellgy"/><br /><sub><b>hellgy</b></sub></a><br /><a href="#design-hellgy" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://weblog.redisdead.net"><img src="https://avatars.githubusercontent.com/u/6494414?v=4?s=100" width="100px;" alt="hellgy"/><br /><sub><b>hellgy</b></sub></a><br /><a href="#design-hellgy" title="Design">🎨</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jackseye"><img src="https://avatars.githubusercontent.com/u/27834526?v=4?s=100" width="100px;" alt="jackseye"/><br /><sub><b>jackseye</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jackseye" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jackseye"><img src="https://avatars.githubusercontent.com/u/27834526?v=4?s=100" width="100px;" alt="jackseye"/><br /><sub><b>jackseye</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jackseye" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marckiesel"><img src="https://avatars.githubusercontent.com/u/39653780?v=4?s=100" width="100px;" alt="marckiesel"/><br /><sub><b>marckiesel</b></sub></a><br /><a href="#translation-marckiesel" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marckiesel"><img src="https://avatars.githubusercontent.com/u/39653780?v=4?s=100" width="100px;" alt="marckiesel"/><br /><sub><b>marckiesel</b></sub></a><br /><a href="#translation-marckiesel" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marpants"><img src="https://avatars.githubusercontent.com/u/61366665?v=4?s=100" width="100px;" alt="marpants"/><br /><sub><b>marpants</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=marpants" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marpants"><img src="https://avatars.githubusercontent.com/u/61366665?v=4?s=100" width="100px;" alt="marpants"/><br /><sub><b>marpants</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=marpants" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://tech.lgbt/@mergerg"><img src="https://avatars.githubusercontent.com/u/64447714?v=4?s=100" width="100px;" alt="mergerg"/><br /><sub><b>mergerg</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=raphaelsiz" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://tech.lgbt/@mergerg"><img src="https://avatars.githubusercontent.com/u/64447714?v=4?s=100" width="100px;" alt="mergerg"/><br /><sub><b>mergerg</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=raphaelsiz" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Mesil"><img src="https://avatars.githubusercontent.com/u/14284175?v=4?s=100" width="100px;" alt="mesil"/><br /><sub><b>mesil</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Amesil" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Mesil"><img src="https://avatars.githubusercontent.com/u/14284175?v=4?s=100" width="100px;" alt="mesil"/><br /><sub><b>mesil</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Amesil" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/starfetch"><img src="https://avatars.githubusercontent.com/u/80041179?v=4?s=100" width="100px;" alt="starfetch"/><br /><sub><b>starfetch</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Documentation">📖</a> <a href="#translation-starfetch" title="Translation">🌍</a> <a href="#design-starfetch" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/starfetch"><img src="https://avatars.githubusercontent.com/u/80041179?v=4?s=100" width="100px;" alt="starfetch"/><br /><sub><b>starfetch</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Documentation">📖</a> <a href="#translation-starfetch" title="Translation">🌍</a> <a href="#design-starfetch" title="Design">🎨</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/timorl"><img src="https://avatars.githubusercontent.com/u/4363804?v=4?s=100" width="100px;" alt="timorl"/><br /><sub><b>timorl</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=timorl" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/timorl"><img src="https://avatars.githubusercontent.com/u/4363804?v=4?s=100" width="100px;" alt="timorl"/><br /><sub><b>timorl</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=timorl" title="Code">💻</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ttimearl"><img src="https://avatars.githubusercontent.com/u/77916590?v=4?s=100" width="100px;" alt="ttimearl"/><br /><sub><b>ttimearl</b></sub></a><br /><a href="#content-ttimearl" title="Content">🖋</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ttimearl"><img src="https://avatars.githubusercontent.com/u/77916590?v=4?s=100" width="100px;" alt="ttimearl"/><br /><sub><b>ttimearl</b></sub></a><br /><a href="#content-ttimearl" title="Content">🖋</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/chrisgloom"><img src="https://avatars.githubusercontent.com/u/15905991?v=4?s=100" width="100px;" alt="tuesgloomsday"/><br /><sub><b>tuesgloomsday</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chrisgloom" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/chrisgloom"><img src="https://avatars.githubusercontent.com/u/15905991?v=4?s=100" width="100px;" alt="tuesgloomsday"/><br /><sub><b>tuesgloomsday</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chrisgloom" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/valadaptive"><img src="https://avatars.githubusercontent.com/u/79560998?v=4?s=100" width="100px;" alt="valadaptive"/><br /><sub><b>valadaptive</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=valadaptive" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/valadaptive"><img src="https://avatars.githubusercontent.com/u/79560998?v=4?s=100" width="100px;" alt="valadaptive"/><br /><sub><b>valadaptive</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=valadaptive" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/viocky"><img src="https://avatars.githubusercontent.com/u/39279173?v=4?s=100" width="100px;" alt="viocky"/><br /><sub><b>viocky</b></sub></a><br /><a href="#translation-viocky" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/viocky"><img src="https://avatars.githubusercontent.com/u/39279173?v=4?s=100" width="100px;" alt="viocky"/><br /><sub><b>viocky</b></sub></a><br /><a href="#translation-viocky" title="Translation">🌍</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/woolishboy"><img src="https://avatars.githubusercontent.com/u/57816321?v=4?s=100" width="100px;" alt="woolishboy"/><br /><sub><b>woolishboy</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woolishboy" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/woolishboy"><img src="https://avatars.githubusercontent.com/u/57816321?v=4?s=100" width="100px;" alt="woolishboy"/><br /><sub><b>woolishboy</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woolishboy" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cloutiy"><img src="https://avatars.githubusercontent.com/u/8433147?v=4?s=100" width="100px;" alt="yc"/><br /><sub><b>yc</b></sub></a><br /><a href="#translation-cloutiy" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cloutiy"><img src="https://avatars.githubusercontent.com/u/8433147?v=4?s=100" width="100px;" alt="yc"/><br /><sub><b>yc</b></sub></a><br /><a href="#translation-cloutiy" title="Translation">🌍</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
59
README.md
59
README.md
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
@ -164,143 +164,148 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cathyzoller"><img src="https://avatars.githubusercontent.com/u/2120275?v=4?s=100" width="100px;" alt="Cathy Zoller"/><br /><sub><b>Cathy Zoller</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=cathyzoller" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cathyzoller"><img src="https://avatars.githubusercontent.com/u/2120275?v=4?s=100" width="100px;" alt="Cathy Zoller"/><br /><sub><b>Cathy Zoller</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=cathyzoller" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Chantalbijoux"><img src="https://avatars.githubusercontent.com/u/39673694?v=4?s=100" width="100px;" alt="Chantal Lapointe"/><br /><sub><b>Chantal Lapointe</b></sub></a><br /><a href="#translation-Chantalbijoux" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Chantalbijoux"><img src="https://avatars.githubusercontent.com/u/39673694?v=4?s=100" width="100px;" alt="Chantal Lapointe"/><br /><sub><b>Chantal Lapointe</b></sub></a><br /><a href="#translation-Chantalbijoux" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RockerKitten"><img src="https://avatars.githubusercontent.com/u/84648053?v=4?s=100" width="100px;" alt="Corey"/><br /><sub><b>Corey</b></sub></a><br /><a href="#question-RockerKitten" title="Answering Questions">💬</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dpiquet"><img src="https://avatars.githubusercontent.com/u/4688628?v=4?s=100" width="100px;" alt="Damien PIQUET"/><br /><sub><b>Damien PIQUET</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=dpiquet" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dpiquet"><img src="https://avatars.githubusercontent.com/u/4688628?v=4?s=100" width="100px;" alt="Damien PIQUET"/><br /><sub><b>Damien PIQUET</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=dpiquet" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.darigovresearch.com/"><img src="https://avatars.githubusercontent.com/u/30328618?v=4?s=100" width="100px;" alt="Darigov Research"/><br /><sub><b>Darigov Research</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=darigovresearch" title="Documentation">📖</a> <a href="#ideas-darigovresearch" title="Ideas, Planning, & Feedback">🤔</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.darigovresearch.com/"><img src="https://avatars.githubusercontent.com/u/30328618?v=4?s=100" width="100px;" alt="Darigov Research"/><br /><sub><b>Darigov Research</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=darigovresearch" title="Documentation">📖</a> <a href="#ideas-darigovresearch" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/clegganator259"><img src="https://avatars.githubusercontent.com/u/3974250?v=4?s=100" width="100px;" alt="David Clegg"/><br /><sub><b>David Clegg</b></sub></a><br /><a href="#design-clegganator259" title="Design">🎨</a> <a href="https://github.com/freesewing/freesewing/commits?author=clegganator259" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/clegganator259"><img src="https://avatars.githubusercontent.com/u/3974250?v=4?s=100" width="100px;" alt="David Clegg"/><br /><sub><b>David Clegg</b></sub></a><br /><a href="#design-clegganator259" title="Design">🎨</a> <a href="https://github.com/freesewing/freesewing/commits?author=clegganator259" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ElenaFdR"><img src="https://avatars.githubusercontent.com/u/5113815?v=4?s=100" width="100px;" alt="Elena FdR"/><br /><sub><b>Elena FdR</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ElenaFdR" title="Documentation">📖</a> <a href="#blog-ElenaFdR" title="Blogposts">📝</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ElenaFdR"><img src="https://avatars.githubusercontent.com/u/5113815?v=4?s=100" width="100px;" alt="Elena FdR"/><br /><sub><b>Elena FdR</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ElenaFdR" title="Documentation">📖</a> <a href="#blog-ElenaFdR" title="Blogposts">📝</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://emmanuelnyachoke.com/"><img src="https://avatars.githubusercontent.com/u/1908926?v=4?s=100" width="100px;" alt="Emmanuel Nyachoke"/><br /><sub><b>Emmanuel Nyachoke</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://emmanuelnyachoke.com/"><img src="https://avatars.githubusercontent.com/u/1908926?v=4?s=100" width="100px;" alt="Emmanuel Nyachoke"/><br /><sub><b>Emmanuel Nyachoke</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://enochriese.com"><img src="https://avatars.githubusercontent.com/u/5298929?v=4?s=100" width="100px;" alt="Enoch Riese"/><br /><sub><b>Enoch Riese</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eriese" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://enochriese.com"><img src="https://avatars.githubusercontent.com/u/5298929?v=4?s=100" width="100px;" alt="Enoch Riese"/><br /><sub><b>Enoch Riese</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eriese" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/EvEkSwed"><img src="https://avatars.githubusercontent.com/u/39723451?v=4?s=100" width="100px;" alt="EvEkSwed"/><br /><sub><b>EvEkSwed</b></sub></a><br /><a href="#translation-EvEkSwed" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/EvEkSwed"><img src="https://avatars.githubusercontent.com/u/39723451?v=4?s=100" width="100px;" alt="EvEkSwed"/><br /><sub><b>EvEkSwed</b></sub></a><br /><a href="#translation-EvEkSwed" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fantastik-Maman"><img src="https://avatars.githubusercontent.com/u/39785382?v=4?s=100" width="100px;" alt="Fantastik-Maman"/><br /><sub><b>Fantastik-Maman</b></sub></a><br /><a href="#translation-Fantastik-Maman" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fantastik-Maman"><img src="https://avatars.githubusercontent.com/u/39785382?v=4?s=100" width="100px;" alt="Fantastik-Maman"/><br /><sub><b>Fantastik-Maman</b></sub></a><br /><a href="#translation-Fantastik-Maman" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.forresto.com/"><img src="https://avatars.githubusercontent.com/u/395307?v=4?s=100" width="100px;" alt="Forrest O."/><br /><sub><b>Forrest O.</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=forresto" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.forresto.com/"><img src="https://avatars.githubusercontent.com/u/395307?v=4?s=100" width="100px;" alt="Forrest O."/><br /><sub><b>Forrest O.</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=forresto" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fmatray"><img src="https://avatars.githubusercontent.com/u/8267716?v=4?s=100" width="100px;" alt="Frédéric"/><br /><sub><b>Frédéric</b></sub></a><br /><a href="#translation-fmatray" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fmatray"><img src="https://avatars.githubusercontent.com/u/8267716?v=4?s=100" width="100px;" alt="Frédéric"/><br /><sub><b>Frédéric</b></sub></a><br /><a href="#translation-fmatray" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/glennfmatthews/"><img src="https://avatars.githubusercontent.com/u/5603551?v=4?s=100" width="100px;" alt="Glenn Matthews"/><br /><sub><b>Glenn Matthews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=glennmatthews" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/glennfmatthews/"><img src="https://avatars.githubusercontent.com/u/5603551?v=4?s=100" width="100px;" alt="Glenn Matthews"/><br /><sub><b>Glenn Matthews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=glennmatthews" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://greg.technology/"><img src="https://avatars.githubusercontent.com/u/1017304?v=4?s=100" width="100px;" alt="Greg Sadetsky"/><br /><sub><b>Greg Sadetsky</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=gregsadetsky" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://greg.technology/"><img src="https://avatars.githubusercontent.com/u/1017304?v=4?s=100" width="100px;" alt="Greg Sadetsky"/><br /><sub><b>Greg Sadetsky</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=gregsadetsky" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Himanshu1801"><img src="https://avatars.githubusercontent.com/u/78968566?v=4?s=100" width="100px;" alt="Himanshu Singh"/><br /><sub><b>Himanshu Singh</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Himanshu1801" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Himanshu1801"><img src="https://avatars.githubusercontent.com/u/78968566?v=4?s=100" width="100px;" alt="Himanshu Singh"/><br /><sub><b>Himanshu Singh</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Himanshu1801" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://kirby.zone"><img src="https://avatars.githubusercontent.com/u/75245963?v=4?s=100" width="100px;" alt="Igor Couto"/><br /><sub><b>Igor Couto</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aiocouto" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://kirby.zone"><img src="https://avatars.githubusercontent.com/u/75245963?v=4?s=100" width="100px;" alt="Igor Couto"/><br /><sub><b>Igor Couto</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aiocouto" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt="Ikko Ashimine"/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eltociear" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt="Ikko Ashimine"/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eltociear" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Irapeke"><img src="https://avatars.githubusercontent.com/u/39604334?v=4?s=100" width="100px;" alt="Irapeke"/><br /><sub><b>Irapeke</b></sub></a><br /><a href="#translation-Irapeke" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Irapeke"><img src="https://avatars.githubusercontent.com/u/39604334?v=4?s=100" width="100px;" alt="Irapeke"/><br /><sub><b>Irapeke</b></sub></a><br /><a href="#translation-Irapeke" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ibek"><img src="https://avatars.githubusercontent.com/u/1140579?v=4?s=100" width="100px;" alt="Ivo Bek"/><br /><sub><b>Ivo Bek</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ibek" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ibek"><img src="https://avatars.githubusercontent.com/u/1140579?v=4?s=100" width="100px;" alt="Ivo Bek"/><br /><sub><b>Ivo Bek</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ibek" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jsawo"><img src="https://avatars.githubusercontent.com/u/1294706?v=4?s=100" width="100px;" alt="Jacek Sawoszczuk"/><br /><sub><b>Jacek Sawoszczuk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jsawo" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jsawo"><img src="https://avatars.githubusercontent.com/u/1294706?v=4?s=100" width="100px;" alt="Jacek Sawoszczuk"/><br /><sub><b>Jacek Sawoszczuk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jsawo" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jgfichte"><img src="https://avatars.githubusercontent.com/u/1787162?v=4?s=100" width="100px;" alt="Jason Williams"/><br /><sub><b>Jason Williams</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jgfichte" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jgfichte"><img src="https://avatars.githubusercontent.com/u/1787162?v=4?s=100" width="100px;" alt="Jason Williams"/><br /><sub><b>Jason Williams</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jgfichte" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jejacks0n"><img src="https://avatars.githubusercontent.com/u/13765?v=4?s=100" width="100px;" alt="Jeremy Jackson"/><br /><sub><b>Jeremy Jackson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jejacks0n" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jejacks0n"><img src="https://avatars.githubusercontent.com/u/13765?v=4?s=100" width="100px;" alt="Jeremy Jackson"/><br /><sub><b>Jeremy Jackson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jejacks0n" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://jeroenhoek.nl"><img src="https://avatars.githubusercontent.com/u/683699?v=4?s=100" width="100px;" alt="Jeroen Hoek"/><br /><sub><b>Jeroen Hoek</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jdhoek" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://jeroenhoek.nl"><img src="https://avatars.githubusercontent.com/u/683699?v=4?s=100" width="100px;" alt="Jeroen Hoek"/><br /><sub><b>Jeroen Hoek</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jdhoek" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joeschofield0"><img src="https://avatars.githubusercontent.com/u/47668691?v=4?s=100" width="100px;" alt="Joe Schofield"/><br /><sub><b>Joe Schofield</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joeschofield0" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joeschofield0"><img src="https://avatars.githubusercontent.com/u/47668691?v=4?s=100" width="100px;" alt="Joe Schofield"/><br /><sub><b>Joe Schofield</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joeschofield0" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Joebidido"><img src="https://avatars.githubusercontent.com/u/39796210?v=4?s=100" width="100px;" alt="Joebidido"/><br /><sub><b>Joebidido</b></sub></a><br /><a href="#translation-Joebidido" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Joebidido"><img src="https://avatars.githubusercontent.com/u/39796210?v=4?s=100" width="100px;" alt="Joebidido"/><br /><sub><b>Joebidido</b></sub></a><br /><a href="#translation-Joebidido" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/HaasJona"><img src="https://avatars.githubusercontent.com/u/4310707?v=4?s=100" width="100px;" alt="Jonathan Haas"/><br /><sub><b>Jonathan Haas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=HaasJona" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/HaasJona"><img src="https://avatars.githubusercontent.com/u/4310707?v=4?s=100" width="100px;" alt="Jonathan Haas"/><br /><sub><b>Jonathan Haas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=HaasJona" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://joost.at/"><img src="https://avatars.githubusercontent.com/u/1708494?v=4?s=100" width="100px;" alt="Joost De Cock"/><br /><sub><b>Joost De Cock</b></sub></a><br /><a href="#maintenance-joostdecock" title="Maintenance">🚧</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://joost.at/"><img src="https://avatars.githubusercontent.com/u/1708494?v=4?s=100" width="100px;" alt="Joost De Cock"/><br /><sub><b>Joost De Cock</b></sub></a><br /><a href="#maintenance-joostdecock" title="Maintenance">🚧</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joshessman"><img src="https://avatars.githubusercontent.com/u/9941074?v=4?s=100" width="100px;" alt="Josh Essman"/><br /><sub><b>Josh Essman</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joshessman" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joshessman"><img src="https://avatars.githubusercontent.com/u/9941074?v=4?s=100" width="100px;" alt="Josh Essman"/><br /><sub><b>Josh Essman</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joshessman" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jpmunic"><img src="https://avatars.githubusercontent.com/u/13474972?v=4?s=100" width="100px;" alt="Josh Munic"/><br /><sub><b>Josh Munic</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Ajpmunic" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jpmunic"><img src="https://avatars.githubusercontent.com/u/13474972?v=4?s=100" width="100px;" alt="Josh Munic"/><br /><sub><b>Josh Munic</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Ajpmunic" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://www.earth.li/~kake/"><img src="https://avatars.githubusercontent.com/u/1956810?v=4?s=100" width="100px;" alt="Kake"/><br /><sub><b>Kake</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=KakeLP" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://www.earth.li/~kake/"><img src="https://avatars.githubusercontent.com/u/1956810?v=4?s=100" width="100px;" alt="Kake"/><br /><sub><b>Kake</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=KakeLP" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/kapunahele"><img src="https://avatars.githubusercontent.com/u/4116963?v=4?s=100" width="100px;" alt="Kapunahele Wong"/><br /><sub><b>Kapunahele Wong</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kapunahelewong" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/kapunahele"><img src="https://avatars.githubusercontent.com/u/4116963?v=4?s=100" width="100px;" alt="Kapunahele Wong"/><br /><sub><b>Kapunahele Wong</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kapunahelewong" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tangerineshark"><img src="https://avatars.githubusercontent.com/u/70777269?v=4?s=100" width="100px;" alt="Karen"/><br /><sub><b>Karen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=tangerineshark" title="Documentation">📖</a> <a href="#eventOrganizing-tangerineshark" title="Event Organizing">📋</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tangerineshark"><img src="https://avatars.githubusercontent.com/u/70777269?v=4?s=100" width="100px;" alt="Karen"/><br /><sub><b>Karen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=tangerineshark" title="Documentation">📖</a> <a href="#eventOrganizing-tangerineshark" title="Event Organizing">📋</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://karlnippoldt.com"><img src="https://avatars.githubusercontent.com/u/7821608?v=4?s=100" width="100px;" alt="Karl Nippoldt"/><br /><sub><b>Karl Nippoldt</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=karlnippoldt" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mcgnly"><img src="https://avatars.githubusercontent.com/u/5653631?v=4?s=100" width="100px;" alt="Katie McGinley"/><br /><sub><b>Katie McGinley</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=mcgnly" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mcgnly"><img src="https://avatars.githubusercontent.com/u/5653631?v=4?s=100" width="100px;" alt="Katie McGinley"/><br /><sub><b>Katie McGinley</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=mcgnly" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://www.kieranklaassen.com/"><img src="https://avatars.githubusercontent.com/u/209089?v=4?s=100" width="100px;" alt="Kieran Klaassen"/><br /><sub><b>Kieran Klaassen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kieranklaassen" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Kittycatou"><img src="https://avatars.githubusercontent.com/u/48165583?v=4?s=100" width="100px;" alt="Kittycatou"/><br /><sub><b>Kittycatou</b></sub></a><br /><a href="#translation-Kittycatou" title="Translation">🌍</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="http://www.kieranklaassen.com/"><img src="https://avatars.githubusercontent.com/u/209089?v=4?s=100" width="100px;" alt="Kieran Klaassen"/><br /><sub><b>Kieran Klaassen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kieranklaassen" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Kittycatou"><img src="https://avatars.githubusercontent.com/u/48165583?v=4?s=100" width="100px;" alt="Kittycatou"/><br /><sub><b>Kittycatou</b></sub></a><br /><a href="#translation-Kittycatou" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.krishoward.org/"><img src="https://avatars.githubusercontent.com/u/5946286?v=4?s=100" width="100px;" alt="Kris"/><br /><sub><b>Kris</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=web-goddess" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.krishoward.org/"><img src="https://avatars.githubusercontent.com/u/5946286?v=4?s=100" width="100px;" alt="Kris"/><br /><sub><b>Kris</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=web-goddess" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kristinruben"><img src="https://avatars.githubusercontent.com/u/17237479?v=4?s=100" width="100px;" alt="Kristin Ruben"/><br /><sub><b>Kristin Ruben</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kristinruben" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kristinruben"><img src="https://avatars.githubusercontent.com/u/17237479?v=4?s=100" width="100px;" alt="Kristin Ruben"/><br /><sub><b>Kristin Ruben</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kristinruben" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/compilin"><img src="https://avatars.githubusercontent.com/u/40794281?v=4?s=100" width="100px;" alt="Lin"/><br /><sub><b>Lin</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=compilin" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/compilin"><img src="https://avatars.githubusercontent.com/u/40794281?v=4?s=100" width="100px;" alt="Lin"/><br /><sub><b>Lin</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=compilin" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Loudepeuter"><img src="https://avatars.githubusercontent.com/u/38081954?v=4?s=100" width="100px;" alt="Loudepeuter"/><br /><sub><b>Loudepeuter</b></sub></a><br /><a href="#translation-Loudepeuter" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Loudepeuter"><img src="https://avatars.githubusercontent.com/u/38081954?v=4?s=100" width="100px;" alt="Loudepeuter"/><br /><sub><b>Loudepeuter</b></sub></a><br /><a href="#translation-Loudepeuter" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lucibytes"><img src="https://avatars.githubusercontent.com/u/77203781?v=4?s=100" width="100px;" alt="Lucian"/><br /><sub><b>Lucian</b></sub></a><br /><a href="#eventOrganizing-lucibytes" title="Event Organizing">📋</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lucibytes"><img src="https://avatars.githubusercontent.com/u/77203781?v=4?s=100" width="100px;" alt="Lucian"/><br /><sub><b>Lucian</b></sub></a><br /><a href="#eventOrganizing-lucibytes" title="Event Organizing">📋</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/luizfzs"><img src="https://avatars.githubusercontent.com/u/6039675?v=4?s=100" width="100px;" alt="Luiz Saggioro"/><br /><sub><b>Luiz Saggioro</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=luizfzs" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MA-TATAS"><img src="https://avatars.githubusercontent.com/u/125549564?v=4?s=100" width="100px;" alt="MA-TATAS"/><br /><sub><b>MA-TATAS</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=MA-TATAS" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/luizfzs"><img src="https://avatars.githubusercontent.com/u/6039675?v=4?s=100" width="100px;" alt="Luiz Saggioro"/><br /><sub><b>Luiz Saggioro</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=luizfzs" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MA-TATAS"><img src="https://avatars.githubusercontent.com/u/125549564?v=4?s=100" width="100px;" alt="MA-TATAS"/><br /><sub><b>MA-TATAS</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=MA-TATAS" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/manufakturedelweiss"><img src="https://avatars.githubusercontent.com/u/38063391?v=4?s=100" width="100px;" alt="Marcus"/><br /><sub><b>Marcus</b></sub></a><br /><a href="#translation-manufakturedelweiss" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/manufakturedelweiss"><img src="https://avatars.githubusercontent.com/u/38063391?v=4?s=100" width="100px;" alt="Marcus"/><br /><sub><b>Marcus</b></sub></a><br /><a href="#translation-manufakturedelweiss" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/martintribo"><img src="https://avatars.githubusercontent.com/u/1613442?v=4?s=100" width="100px;" alt="Martin Tribo"/><br /><sub><b>Martin Tribo</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=martintribo" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/martintribo"><img src="https://avatars.githubusercontent.com/u/1613442?v=4?s=100" width="100px;" alt="Martin Tribo"/><br /><sub><b>Martin Tribo</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=martintribo" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nadege"><img src="https://avatars.githubusercontent.com/u/3792171?v=4?s=100" width="100px;" alt="Nadege Michel"/><br /><sub><b>Nadege Michel</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Tests">⚠️</a> <a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nadege"><img src="https://avatars.githubusercontent.com/u/3792171?v=4?s=100" width="100px;" alt="Nadege Michel"/><br /><sub><b>Nadege Michel</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Tests">⚠️</a> <a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nataliasayang"><img src="https://avatars.githubusercontent.com/u/48160791?v=4?s=100" width="100px;" alt="Natalia"/><br /><sub><b>Natalia</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nataliasayang" title="Code">💻</a> <a href="#design-nataliasayang" title="Design">🎨</a> <a href="#blog-nataliasayang" title="Blogposts">📝</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nataliasayang"><img src="https://avatars.githubusercontent.com/u/48160791?v=4?s=100" width="100px;" alt="Natalia"/><br /><sub><b>Natalia</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nataliasayang" title="Code">💻</a> <a href="#design-nataliasayang" title="Design">🎨</a> <a href="#blog-nataliasayang" title="Blogposts">📝</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://yergler.net/"><img src="https://avatars.githubusercontent.com/u/510875?v=4?s=100" width="100px;" alt="Nathan Yergler"/><br /><sub><b>Nathan Yergler</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nyergler" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://yergler.net/"><img src="https://avatars.githubusercontent.com/u/510875?v=4?s=100" width="100px;" alt="Nathan Yergler"/><br /><sub><b>Nathan Yergler</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nyergler" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nicholasdower"><img src="https://avatars.githubusercontent.com/u/9117775?v=4?s=100" width="100px;" alt="Nick Dower"/><br /><sub><b>Nick Dower</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/issues?q=author%3Anicholasdower" title="Bug reports">🐛</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nchilada"><img src="https://avatars.githubusercontent.com/u/692925?v=4?s=100" width="100px;" alt="Nikhil Chelliah"/><br /><sub><b>Nikhil Chelliah</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nchilada" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/GeniaHarrietBoeing"><img src="https://avatars.githubusercontent.com/u/73827848?v=4?s=100" width="100px;" alt="Niabon"/><br /><sub><b>Niabon</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=GeniaHarrietBoeing" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nicholasdower"><img src="https://avatars.githubusercontent.com/u/9117775?v=4?s=100" width="100px;" alt="Nick Dower"/><br /><sub><b>Nick Dower</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/issues?q=author%3Anicholasdower" title="Bug reports">🐛</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nchilada"><img src="https://avatars.githubusercontent.com/u/692925?v=4?s=100" width="100px;" alt="Nikhil Chelliah"/><br /><sub><b>Nikhil Chelliah</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nchilada" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/OysteinHoiby"><img src="https://avatars.githubusercontent.com/u/49735055?v=4?s=100" width="100px;" alt="OysteinHoiby"/><br /><sub><b>OysteinHoiby</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=OysteinHoiby" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/OysteinHoiby"><img src="https://avatars.githubusercontent.com/u/49735055?v=4?s=100" width="100px;" alt="OysteinHoiby"/><br /><sub><b>OysteinHoiby</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=OysteinHoiby" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://pat.forringer.com/"><img src="https://avatars.githubusercontent.com/u/136456?v=4?s=100" width="100px;" alt="Patrick Forringer"/><br /><sub><b>Patrick Forringer</b></sub></a><br /><a href="#plugin-destos" title="Plugin/utility libraries">🔌</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://pat.forringer.com/"><img src="https://avatars.githubusercontent.com/u/136456?v=4?s=100" width="100px;" alt="Patrick Forringer"/><br /><sub><b>Patrick Forringer</b></sub></a><br /><a href="#plugin-destos" title="Plugin/utility libraries">🔌</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://pd75.github.io/"><img src="https://avatars.githubusercontent.com/u/10294795?v=4?s=100" width="100px;" alt="Paul"/><br /><sub><b>Paul</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=PD75" title="Documentation">📖</a> <a href="#blog-PD75" title="Blogposts">📝</a> <a href="#translation-PD75" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://pd75.github.io/"><img src="https://avatars.githubusercontent.com/u/10294795?v=4?s=100" width="100px;" alt="Paul"/><br /><sub><b>Paul</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=PD75" title="Documentation">📖</a> <a href="#blog-PD75" title="Blogposts">📝</a> <a href="#translation-PD75" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pvidas"><img src="https://avatars.githubusercontent.com/u/38463064?v=4?s=100" width="100px;" alt="Paula Vidas"/><br /><sub><b>Paula Vidas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=pvidas" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pvidas"><img src="https://avatars.githubusercontent.com/u/38463064?v=4?s=100" width="100px;" alt="Paula Vidas"/><br /><sub><b>Paula Vidas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=pvidas" title="Code">💻</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/phillipthelen"><img src="https://avatars.githubusercontent.com/u/298062?v=4?s=100" width="100px;" alt="Phillip Thelen"/><br /><sub><b>Phillip Thelen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=phillipthelen" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/phillipthelen"><img src="https://avatars.githubusercontent.com/u/298062?v=4?s=100" width="100px;" alt="Phillip Thelen"/><br /><sub><b>Phillip Thelen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=phillipthelen" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Pixieish"><img src="https://avatars.githubusercontent.com/u/32991415?v=4?s=100" width="100px;" alt="Pixieish"/><br /><sub><b>Pixieish</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Pixieish" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Pixieish"><img src="https://avatars.githubusercontent.com/u/32991415?v=4?s=100" width="100px;" alt="Pixieish"/><br /><sub><b>Pixieish</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Pixieish" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.uza.be/persoon/prof-dr-sorcha-ni-dhubhghaill"><img src="https://avatars.githubusercontent.com/u/30624634?v=4?s=100" width="100px;" alt="Prof. dr. Sorcha Ní Dhubhghaill"/><br /><sub><b>Prof. dr. Sorcha Ní Dhubhghaill</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sorchanidhubhghaill" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.uza.be/persoon/prof-dr-sorcha-ni-dhubhghaill"><img src="https://avatars.githubusercontent.com/u/30624634?v=4?s=100" width="100px;" alt="Prof. dr. Sorcha Ní Dhubhghaill"/><br /><sub><b>Prof. dr. Sorcha Ní Dhubhghaill</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sorchanidhubhghaill" title="Documentation">📖</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/QuentinFelix"><img src="https://avatars.githubusercontent.com/u/5288091?v=4?s=100" width="100px;" alt="Quentin FELIX"/><br /><sub><b>Quentin FELIX</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=QuentinFelix" title="Code">💻</a> <a href="#design-QuentinFelix" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/QuentinFelix"><img src="https://avatars.githubusercontent.com/u/5288091?v=4?s=100" width="100px;" alt="Quentin FELIX"/><br /><sub><b>Quentin FELIX</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=QuentinFelix" title="Code">💻</a> <a href="#design-QuentinFelix" title="Design">🎨</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://rachel.ostic.ca"><img src="https://avatars.githubusercontent.com/u/65781290?v=4?s=100" width="100px;" alt="Rachel Ostic"/><br /><sub><b>Rachel Ostic</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=rachelostic" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://rachel.ostic.ca"><img src="https://avatars.githubusercontent.com/u/65781290?v=4?s=100" width="100px;" alt="Rachel Ostic"/><br /><sub><b>Rachel Ostic</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=rachelostic" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RikHekker"><img src="https://avatars.githubusercontent.com/u/31843274?v=4?s=100" width="100px;" alt="Rik Hekker"/><br /><sub><b>Rik Hekker</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ARikHekker" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RikHekker"><img src="https://avatars.githubusercontent.com/u/31843274?v=4?s=100" width="100px;" alt="Rik Hekker"/><br /><sub><b>Rik Hekker</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ARikHekker" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://resume.livingston-gray.com/faq.html"><img src="https://avatars.githubusercontent.com/u/6462?v=4?s=100" width="100px;" alt="Sam Livingston-Gray"/><br /><sub><b>Sam Livingston-Gray</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=geeksam" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://resume.livingston-gray.com/faq.html"><img src="https://avatars.githubusercontent.com/u/6462?v=4?s=100" width="100px;" alt="Sam Livingston-Gray"/><br /><sub><b>Sam Livingston-Gray</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=geeksam" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sannek"><img src="https://avatars.githubusercontent.com/u/17491062?v=4?s=100" width="100px;" alt="Sanne"/><br /><sub><b>Sanne</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sannek"><img src="https://avatars.githubusercontent.com/u/17491062?v=4?s=100" width="100px;" alt="Sanne"/><br /><sub><b>Sanne</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Tyrannogina"><img src="https://avatars.githubusercontent.com/u/19556565?v=4?s=100" width="100px;" alt="Sara Latorre"/><br /><sub><b>Sara Latorre</b></sub></a><br /><a href="#translation-Tyrannogina" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Tyrannogina"><img src="https://avatars.githubusercontent.com/u/19556565?v=4?s=100" width="100px;" alt="Sara Latorre"/><br /><sub><b>Sara Latorre</b></sub></a><br /><a href="#translation-Tyrannogina" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SeaZeeZee"><img src="https://avatars.githubusercontent.com/u/86711383?v=4?s=100" width="100px;" alt="SeaZeeZee"/><br /><sub><b>SeaZeeZee</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SeaZeeZee"><img src="https://avatars.githubusercontent.com/u/86711383?v=4?s=100" width="100px;" alt="SeaZeeZee"/><br /><sub><b>SeaZeeZee</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Code">💻</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SimonbJohnson"><img src="https://avatars.githubusercontent.com/u/2110742?v=4?s=100" width="100px;" alt="SimonbJohnson"/><br /><sub><b>SimonbJohnson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ASimonbJohnson" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SimonbJohnson"><img src="https://avatars.githubusercontent.com/u/2110742?v=4?s=100" width="100px;" alt="SimonbJohnson"/><br /><sub><b>SimonbJohnson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ASimonbJohnson" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SirCharlotte"><img src="https://avatars.githubusercontent.com/u/63847870?v=4?s=100" width="100px;" alt="SirCharlotte"/><br /><sub><b>SirCharlotte</b></sub></a><br /><a href="#translation-SirCharlotte" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SirCharlotte"><img src="https://avatars.githubusercontent.com/u/63847870?v=4?s=100" width="100px;" alt="SirCharlotte"/><br /><sub><b>SirCharlotte</b></sub></a><br /><a href="#translation-SirCharlotte" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.instagram.com/celine_mge/"><img src="https://avatars.githubusercontent.com/u/57619777?v=4?s=100" width="100px;" alt="Slylele"/><br /><sub><b>Slylele</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Slylele" title="Documentation">📖</a> <a href="#translation-Slylele" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.instagram.com/celine_mge/"><img src="https://avatars.githubusercontent.com/u/57619777?v=4?s=100" width="100px;" alt="Slylele"/><br /><sub><b>Slylele</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Slylele" title="Documentation">📖</a> <a href="#translation-Slylele" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Soazillon"><img src="https://avatars.githubusercontent.com/u/40845940?v=4?s=100" width="100px;" alt="Soazillon"/><br /><sub><b>Soazillon</b></sub></a><br /><a href="#translation-Soazillon" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Soazillon"><img src="https://avatars.githubusercontent.com/u/40845940?v=4?s=100" width="100px;" alt="Soazillon"/><br /><sub><b>Soazillon</b></sub></a><br /><a href="#translation-Soazillon" title="Translation">🌍</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sohamtembhurne"><img src="https://avatars.githubusercontent.com/u/82658685?v=4?s=100" width="100px;" alt="Soham Tembhurne"/><br /><sub><b>Soham Tembhurne</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sohamtembhurne" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sohamtembhurne"><img src="https://avatars.githubusercontent.com/u/82658685?v=4?s=100" width="100px;" alt="Soham Tembhurne"/><br /><sub><b>Soham Tembhurne</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sohamtembhurne" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SoneaTheBest"><img src="https://avatars.githubusercontent.com/u/64635425?v=4?s=100" width="100px;" alt="SoneaTheBest"/><br /><sub><b>SoneaTheBest</b></sub></a><br /><a href="#translation-SoneaTheBest" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SoneaTheBest"><img src="https://avatars.githubusercontent.com/u/64635425?v=4?s=100" width="100px;" alt="SoneaTheBest"/><br /><sub><b>SoneaTheBest</b></sub></a><br /><a href="#translation-SoneaTheBest" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.sophiah.gay/"><img src="https://avatars.githubusercontent.com/u/10786212?v=4?s=100" width="100px;" alt="Sophia"/><br /><sub><b>Sophia</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=SophiaH67" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://www.sophiah.gay/"><img src="https://avatars.githubusercontent.com/u/10786212?v=4?s=100" width="100px;" alt="Sophia"/><br /><sub><b>Sophia</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=SophiaH67" title="Code">💻</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://metafly.info/"><img src="https://avatars.githubusercontent.com/u/961256?v=4?s=100" width="100px;" alt="Stefan Sydow"/><br /><sub><b>Stefan Sydow</b></sub></a><br /><a href="#translation-stsydow" title="Translation">🌍</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://metafly.info/"><img src="https://avatars.githubusercontent.com/u/961256?v=4?s=100" width="100px;" alt="Stefan Sydow"/><br /><sub><b>Stefan Sydow</b></sub></a><br /><a href="#translation-stsydow" title="Translation">🌍</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://stefanocislaghi.com"><img src="https://avatars.githubusercontent.com/u/1659414?v=4?s=100" width="100px;" alt="Stefano"/><br /><sub><b>Stefano</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=LunaticMuch" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://stefanocislaghi.com"><img src="https://avatars.githubusercontent.com/u/1659414?v=4?s=100" width="100px;" alt="Stefano"/><br /><sub><b>Stefano</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=LunaticMuch" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/biswassushmita947"><img src="https://avatars.githubusercontent.com/u/145688707?v=4?s=100" width="100px;" alt="Sushmita Biswas"/><br /><sub><b>Sushmita Biswas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=biswassushmita947" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/biswassushmita947"><img src="https://avatars.githubusercontent.com/u/145688707?v=4?s=100" width="100px;" alt="Sushmita Biswas"/><br /><sub><b>Sushmita Biswas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=biswassushmita947" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TheTanay902"><img src="https://avatars.githubusercontent.com/u/84577440?v=4?s=100" width="100px;" alt="Tanay Toshniwal"/><br /><sub><b>Tanay Toshniwal</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=TheTanay902" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TheTanay902"><img src="https://avatars.githubusercontent.com/u/84577440?v=4?s=100" width="100px;" alt="Tanay Toshniwal"/><br /><sub><b>Tanay Toshniwal</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=TheTanay902" title="Code">💻</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/trentonTrama"><img src="https://avatars.githubusercontent.com/u/41126812?v=4?s=100" width="100px;" alt="Trent Trama"/><br /><sub><b>Trent Trama</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=trentonTrama" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/trentonTrama"><img src="https://avatars.githubusercontent.com/u/41126812?v=4?s=100" width="100px;" alt="Trent Trama"/><br /><sub><b>Trent Trama</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=trentonTrama" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TriploidTree"><img src="https://avatars.githubusercontent.com/u/4170521?v=4?s=100" width="100px;" alt="Tríona"/><br /><sub><b>Tríona</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=TriploidTree" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TriploidTree"><img src="https://avatars.githubusercontent.com/u/4170521?v=4?s=100" width="100px;" alt="Tríona"/><br /><sub><b>Tríona</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=TriploidTree" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/theUnmutual"><img src="https://avatars.githubusercontent.com/u/22374635?v=4?s=100" width="100px;" alt="Unmutual"/><br /><sub><b>Unmutual</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=theUnmutual" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/theUnmutual"><img src="https://avatars.githubusercontent.com/u/22374635?v=4?s=100" width="100px;" alt="Unmutual"/><br /><sub><b>Unmutual</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=theUnmutual" title="Documentation">📖</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ArcticCoder"><img src="https://avatars.githubusercontent.com/u/39151688?v=4?s=100" width="100px;" alt="Vili Sinervä"/><br /><sub><b>Vili Sinervä</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ArcticCoder" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ArcticCoder"><img src="https://avatars.githubusercontent.com/u/39151688?v=4?s=100" width="100px;" alt="Vili Sinervä"/><br /><sub><b>Vili Sinervä</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ArcticCoder" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/VSinerva"><img src="https://avatars.githubusercontent.com/u/39151688?v=4?s=100" width="100px;" alt="Vili Sinervä"/><br /><sub><b>Vili Sinervä</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=VSinerva" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/VSinerva"><img src="https://avatars.githubusercontent.com/u/39151688?v=4?s=100" width="100px;" alt="Vili Sinervä"/><br /><sub><b>Vili Sinervä</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=VSinerva" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/woutervdub"><img src="https://avatars.githubusercontent.com/u/24414629?v=4?s=100" width="100px;" alt="Wouter van Wageningen"/><br /><sub><b>Wouter van Wageningen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woutervdub" title="Code">💻</a> <a href="#design-woutervdub" title="Design">🎨</a> <a href="#tool-woutervdub" title="Tools">🔧</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/woutervdub"><img src="https://avatars.githubusercontent.com/u/24414629?v=4?s=100" width="100px;" alt="Wouter van Wageningen"/><br /><sub><b>Wouter van Wageningen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woutervdub" title="Code">💻</a> <a href="#design-woutervdub" title="Design">🎨</a> <a href="#tool-woutervdub" title="Tools">🔧</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Yash-Ambekar"><img src="https://avatars.githubusercontent.com/u/96481913?v=4?s=100" width="100px;" alt="Yash Anil Ambekar"/><br /><sub><b>Yash Anil Ambekar</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Yash-Ambekar" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Yash-Ambekar"><img src="https://avatars.githubusercontent.com/u/96481913?v=4?s=100" width="100px;" alt="Yash Anil Ambekar"/><br /><sub><b>Yash Anil Ambekar</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Yash-Ambekar" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/amysews"><img src="https://avatars.githubusercontent.com/u/25280778?v=4?s=100" width="100px;" alt="amysews"/><br /><sub><b>amysews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=amysews" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/amysews"><img src="https://avatars.githubusercontent.com/u/25280778?v=4?s=100" width="100px;" alt="amysews"/><br /><sub><b>amysews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=amysews" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/anna-puk"><img src="https://avatars.githubusercontent.com/u/100537439?v=4?s=100" width="100px;" alt="anna-puk"/><br /><sub><b>anna-puk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=anna-puk" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/anna-puk"><img src="https://avatars.githubusercontent.com/u/100537439?v=4?s=100" width="100px;" alt="anna-puk"/><br /><sub><b>anna-puk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=anna-puk" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/beautifulsummermoon"><img src="https://avatars.githubusercontent.com/u/40396388?v=4?s=100" width="100px;" alt="beautifulsummermoon"/><br /><sub><b>beautifulsummermoon</b></sub></a><br /><a href="#translation-beautifulsummermoon" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/beautifulsummermoon"><img src="https://avatars.githubusercontent.com/u/40396388?v=4?s=100" width="100px;" alt="beautifulsummermoon"/><br /><sub><b>beautifulsummermoon</b></sub></a><br /><a href="#translation-beautifulsummermoon" title="Translation">🌍</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/berce"><img src="https://avatars.githubusercontent.com/u/10439709?v=4?s=100" width="100px;" alt="berce"/><br /><sub><b>berce</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=berce" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/berce"><img src="https://avatars.githubusercontent.com/u/10439709?v=4?s=100" width="100px;" alt="berce"/><br /><sub><b>berce</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=berce" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/biou"><img src="https://avatars.githubusercontent.com/u/1340376?v=4?s=100" width="100px;" alt="biou"/><br /><sub><b>biou</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=biou" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/biou"><img src="https://avatars.githubusercontent.com/u/1340376?v=4?s=100" width="100px;" alt="biou"/><br /><sub><b>biou</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=biou" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bobgeorgethe3rd"><img src="https://avatars.githubusercontent.com/u/16866285?v=4?s=100" width="100px;" alt="bobgeorgethe3rd"/><br /><sub><b>bobgeorgethe3rd</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Documentation">📖</a> <a href="#design-bobgeorgethe3rd" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bobgeorgethe3rd"><img src="https://avatars.githubusercontent.com/u/16866285?v=4?s=100" width="100px;" alt="bobgeorgethe3rd"/><br /><sub><b>bobgeorgethe3rd</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Documentation">📖</a> <a href="#design-bobgeorgethe3rd" title="Design">🎨</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/brmlyklr"><img src="https://avatars.githubusercontent.com/u/22308713?v=4?s=100" width="100px;" alt="brmlyklr"/><br /><sub><b>brmlyklr</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=brmlyklr" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/brmlyklr"><img src="https://avatars.githubusercontent.com/u/22308713?v=4?s=100" width="100px;" alt="brmlyklr"/><br /><sub><b>brmlyklr</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=brmlyklr" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://www.chrisbarrett.fr"><img src="https://avatars.githubusercontent.com/u/2373249?v=4?s=100" width="100px;" alt="chri5b"/><br /><sub><b>chri5b</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Tests">⚠️</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://www.chrisbarrett.fr"><img src="https://avatars.githubusercontent.com/u/2373249?v=4?s=100" width="100px;" alt="chri5b"/><br /><sub><b>chri5b</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Tests">⚠️</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dingcycle"><img src="https://avatars.githubusercontent.com/u/1681985?v=4?s=100" width="100px;" alt="dingcycle"/><br /><sub><b>dingcycle</b></sub></a><br /><a href="#translation-dingcycle" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dingcycle"><img src="https://avatars.githubusercontent.com/u/1681985?v=4?s=100" width="100px;" alt="dingcycle"/><br /><sub><b>dingcycle</b></sub></a><br /><a href="#translation-dingcycle" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/drowned-in-books"><img src="https://avatars.githubusercontent.com/u/100040772?v=4?s=100" width="100px;" alt="drowned-in-books"/><br /><sub><b>drowned-in-books</b></sub></a><br /><a href="#question-drowned-in-books" title="Answering Questions">💬</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/drowned-in-books"><img src="https://avatars.githubusercontent.com/u/100040772?v=4?s=100" width="100px;" alt="drowned-in-books"/><br /><sub><b>drowned-in-books</b></sub></a><br /><a href="#question-drowned-in-books" title="Answering Questions">💬</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/econo202"><img src="https://avatars.githubusercontent.com/u/34138153?v=4?s=100" width="100px;" alt="econo202"/><br /><sub><b>econo202</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=econo202" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/econo202"><img src="https://avatars.githubusercontent.com/u/34138153?v=4?s=100" width="100px;" alt="econo202"/><br /><sub><b>econo202</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=econo202" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ericamattos"><img src="https://avatars.githubusercontent.com/u/4341417?v=4?s=100" width="100px;" alt="ericamattos"/><br /><sub><b>ericamattos</b></sub></a><br /><a href="#translation-ericamattos" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ericamattos"><img src="https://avatars.githubusercontent.com/u/4341417?v=4?s=100" width="100px;" alt="ericamattos"/><br /><sub><b>ericamattos</b></sub></a><br /><a href="#translation-ericamattos" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/evilrobotfromouterspace"><img src="https://avatars.githubusercontent.com/u/143673955?v=4?s=100" width="100px;" alt="evilrobotfromouterspace"/><br /><sub><b>evilrobotfromouterspace</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aevilrobotfromouterspace" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/evilrobotfromouterspace"><img src="https://avatars.githubusercontent.com/u/143673955?v=4?s=100" width="100px;" alt="evilrobotfromouterspace"/><br /><sub><b>evilrobotfromouterspace</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aevilrobotfromouterspace" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fightingrabbit"><img src="https://avatars.githubusercontent.com/u/25751445?v=4?s=100" width="100px;" alt="fightingrabbit"/><br /><sub><b>fightingrabbit</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=fightingrabbit" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fightingrabbit"><img src="https://avatars.githubusercontent.com/u/25751445?v=4?s=100" width="100px;" alt="fightingrabbit"/><br /><sub><b>fightingrabbit</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=fightingrabbit" title="Code">💻</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DocSpencer77"><img src="https://avatars.githubusercontent.com/u/43393580?v=4?s=100" width="100px;" alt="gaylyndie"/><br /><sub><b>gaylyndie</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=DocSpencer77" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DocSpencer77"><img src="https://avatars.githubusercontent.com/u/43393580?v=4?s=100" width="100px;" alt="gaylyndie"/><br /><sub><b>gaylyndie</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=DocSpencer77" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/grimlokason"><img src="https://avatars.githubusercontent.com/u/5112238?v=4?s=100" width="100px;" alt="grimlokason"/><br /><sub><b>grimlokason</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=grimlokason" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/grimlokason"><img src="https://avatars.githubusercontent.com/u/5112238?v=4?s=100" width="100px;" alt="grimlokason"/><br /><sub><b>grimlokason</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=grimlokason" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://weblog.redisdead.net"><img src="https://avatars.githubusercontent.com/u/6494414?v=4?s=100" width="100px;" alt="hellgy"/><br /><sub><b>hellgy</b></sub></a><br /><a href="#design-hellgy" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://weblog.redisdead.net"><img src="https://avatars.githubusercontent.com/u/6494414?v=4?s=100" width="100px;" alt="hellgy"/><br /><sub><b>hellgy</b></sub></a><br /><a href="#design-hellgy" title="Design">🎨</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jackseye"><img src="https://avatars.githubusercontent.com/u/27834526?v=4?s=100" width="100px;" alt="jackseye"/><br /><sub><b>jackseye</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jackseye" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jackseye"><img src="https://avatars.githubusercontent.com/u/27834526?v=4?s=100" width="100px;" alt="jackseye"/><br /><sub><b>jackseye</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jackseye" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marckiesel"><img src="https://avatars.githubusercontent.com/u/39653780?v=4?s=100" width="100px;" alt="marckiesel"/><br /><sub><b>marckiesel</b></sub></a><br /><a href="#translation-marckiesel" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marckiesel"><img src="https://avatars.githubusercontent.com/u/39653780?v=4?s=100" width="100px;" alt="marckiesel"/><br /><sub><b>marckiesel</b></sub></a><br /><a href="#translation-marckiesel" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marpants"><img src="https://avatars.githubusercontent.com/u/61366665?v=4?s=100" width="100px;" alt="marpants"/><br /><sub><b>marpants</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=marpants" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marpants"><img src="https://avatars.githubusercontent.com/u/61366665?v=4?s=100" width="100px;" alt="marpants"/><br /><sub><b>marpants</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=marpants" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://tech.lgbt/@mergerg"><img src="https://avatars.githubusercontent.com/u/64447714?v=4?s=100" width="100px;" alt="mergerg"/><br /><sub><b>mergerg</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=raphaelsiz" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://tech.lgbt/@mergerg"><img src="https://avatars.githubusercontent.com/u/64447714?v=4?s=100" width="100px;" alt="mergerg"/><br /><sub><b>mergerg</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=raphaelsiz" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Mesil"><img src="https://avatars.githubusercontent.com/u/14284175?v=4?s=100" width="100px;" alt="mesil"/><br /><sub><b>mesil</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Amesil" title="Bug reports">🐛</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Mesil"><img src="https://avatars.githubusercontent.com/u/14284175?v=4?s=100" width="100px;" alt="mesil"/><br /><sub><b>mesil</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Amesil" title="Bug reports">🐛</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/starfetch"><img src="https://avatars.githubusercontent.com/u/80041179?v=4?s=100" width="100px;" alt="starfetch"/><br /><sub><b>starfetch</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Documentation">📖</a> <a href="#translation-starfetch" title="Translation">🌍</a> <a href="#design-starfetch" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/starfetch"><img src="https://avatars.githubusercontent.com/u/80041179?v=4?s=100" width="100px;" alt="starfetch"/><br /><sub><b>starfetch</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Documentation">📖</a> <a href="#translation-starfetch" title="Translation">🌍</a> <a href="#design-starfetch" title="Design">🎨</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/timorl"><img src="https://avatars.githubusercontent.com/u/4363804?v=4?s=100" width="100px;" alt="timorl"/><br /><sub><b>timorl</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=timorl" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/timorl"><img src="https://avatars.githubusercontent.com/u/4363804?v=4?s=100" width="100px;" alt="timorl"/><br /><sub><b>timorl</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=timorl" title="Code">💻</a></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ttimearl"><img src="https://avatars.githubusercontent.com/u/77916590?v=4?s=100" width="100px;" alt="ttimearl"/><br /><sub><b>ttimearl</b></sub></a><br /><a href="#content-ttimearl" title="Content">🖋</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ttimearl"><img src="https://avatars.githubusercontent.com/u/77916590?v=4?s=100" width="100px;" alt="ttimearl"/><br /><sub><b>ttimearl</b></sub></a><br /><a href="#content-ttimearl" title="Content">🖋</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/chrisgloom"><img src="https://avatars.githubusercontent.com/u/15905991?v=4?s=100" width="100px;" alt="tuesgloomsday"/><br /><sub><b>tuesgloomsday</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chrisgloom" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/chrisgloom"><img src="https://avatars.githubusercontent.com/u/15905991?v=4?s=100" width="100px;" alt="tuesgloomsday"/><br /><sub><b>tuesgloomsday</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chrisgloom" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/valadaptive"><img src="https://avatars.githubusercontent.com/u/79560998?v=4?s=100" width="100px;" alt="valadaptive"/><br /><sub><b>valadaptive</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=valadaptive" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/valadaptive"><img src="https://avatars.githubusercontent.com/u/79560998?v=4?s=100" width="100px;" alt="valadaptive"/><br /><sub><b>valadaptive</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=valadaptive" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/viocky"><img src="https://avatars.githubusercontent.com/u/39279173?v=4?s=100" width="100px;" alt="viocky"/><br /><sub><b>viocky</b></sub></a><br /><a href="#translation-viocky" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/viocky"><img src="https://avatars.githubusercontent.com/u/39279173?v=4?s=100" width="100px;" alt="viocky"/><br /><sub><b>viocky</b></sub></a><br /><a href="#translation-viocky" title="Translation">🌍</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/woolishboy"><img src="https://avatars.githubusercontent.com/u/57816321?v=4?s=100" width="100px;" alt="woolishboy"/><br /><sub><b>woolishboy</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woolishboy" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/woolishboy"><img src="https://avatars.githubusercontent.com/u/57816321?v=4?s=100" width="100px;" alt="woolishboy"/><br /><sub><b>woolishboy</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woolishboy" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cloutiy"><img src="https://avatars.githubusercontent.com/u/8433147?v=4?s=100" width="100px;" alt="yc"/><br /><sub><b>yc</b></sub></a><br /><a href="#translation-cloutiy" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cloutiy"><img src="https://avatars.githubusercontent.com/u/8433147?v=4?s=100" width="100px;" alt="yc"/><br /><sub><b>yc</b></sub></a><br /><a href="#translation-cloutiy" title="Translation">🌍</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -1,7 +1,16 @@
|
||||||
Unreleased:
|
Unreleased:
|
||||||
|
Added:
|
||||||
|
core:
|
||||||
|
- The `Path.rotate()` method was added to the core API.
|
||||||
|
|
||||||
Changed:
|
Changed:
|
||||||
brian:
|
brian:
|
||||||
- Always load plugin-bust due to its changes in how it handle conditionality.
|
- Always load plugin-bust due to its changes in how it handle conditionality.
|
||||||
|
cathrin:
|
||||||
|
- Allow negative values in backDrop option. Fixes #6563
|
||||||
|
- Allow negative values for the frontRise options. Fixes #6563
|
||||||
|
huey:
|
||||||
|
- The lengthBonus option default was changed from 0% to 15%. Fixes #6596
|
||||||
onyx:
|
onyx:
|
||||||
- Always load plugin-bust due to its changes in how it handle conditionality.
|
- Always load plugin-bust due to its changes in how it handle conditionality.
|
||||||
plugin-bust:
|
plugin-bust:
|
||||||
|
@ -10,6 +19,8 @@ Unreleased:
|
||||||
- The plugin will now always be loaded, but will check for each drafted set whether it should make any changes.
|
- The plugin will now always be loaded, but will check for each drafted set whether it should make any changes.
|
||||||
shelly:
|
shelly:
|
||||||
- Always load plugin-bust due to its changes in how it handle conditionality.
|
- Always load plugin-bust due to its changes in how it handle conditionality.
|
||||||
|
simon:
|
||||||
|
- Allow negative values for the buttonFreeLength option. Fixes #6508
|
||||||
tamiko:
|
tamiko:
|
||||||
- Always load plugin-bust due to its changes in how it handle conditionality.
|
- Always load plugin-bust due to its changes in how it handle conditionality.
|
||||||
wahid:
|
wahid:
|
||||||
|
@ -20,12 +31,21 @@ Unreleased:
|
||||||
- The `withCondition` named export is deprecated and will always return true.
|
- The `withCondition` named export is deprecated and will always return true.
|
||||||
|
|
||||||
Fixed:
|
Fixed:
|
||||||
|
charlie:
|
||||||
|
- Fix cut instructions for fly facing, only 1 to be cut. Fixes #6392
|
||||||
huey:
|
huey:
|
||||||
- Fixed an issue where ribbing height would distort the pocket under certain conditions. Fixes #6238
|
- Fixed an issue where ribbing height would distort the pocket under certain conditions. Fixes #6238
|
||||||
- Adding missing translation for ribbing option
|
- Adding missing translation for ribbing option
|
||||||
- Hide unused ribbing parts when ribbing option is disabled
|
- Hide unused ribbing parts when ribbing option is disabled
|
||||||
hugo:
|
hugo:
|
||||||
- Add missing dimension id attributes
|
- Add missing dimension id attributes
|
||||||
|
noble:
|
||||||
|
- Fix 'cutonfold' text for Noble's back part. Fixes #6447
|
||||||
|
- Improve dart shaping. Fixes #64547
|
||||||
|
simone:
|
||||||
|
- Added missing translation for various options
|
||||||
|
teagan:
|
||||||
|
- Fix side seam when length is cropped. Fixes #6480
|
||||||
uma:
|
uma:
|
||||||
- Fix back exposure when expand is off. Fixes #6239
|
- Fix back exposure when expand is off. Fixes #6239
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,10 @@ jaeger:
|
||||||
'@freesewing/brian': *freesewing
|
'@freesewing/brian': *freesewing
|
||||||
'@freesewing/bent': *freesewing
|
'@freesewing/bent': *freesewing
|
||||||
'@freesewing/plugin-bust': *freesewing
|
'@freesewing/plugin-bust': *freesewing
|
||||||
|
lily:
|
||||||
|
peer:
|
||||||
|
'@freesewing/titan': *freesewing
|
||||||
|
'@freesewing/paco': *freesewing
|
||||||
new-design:
|
new-design:
|
||||||
_:
|
_:
|
||||||
'axios': &axios '1.6.8'
|
'axios': &axios '1.6.8'
|
||||||
|
@ -192,9 +196,9 @@ backend:
|
||||||
'passport': '0.7.0'
|
'passport': '0.7.0'
|
||||||
'passport-http': '0.3.0'
|
'passport-http': '0.3.0'
|
||||||
'passport-jwt': '4.0.1'
|
'passport-jwt': '4.0.1'
|
||||||
'pino': '8.19.0'
|
'pino': '9.0.0'
|
||||||
'qrcode': '1.5.3'
|
'qrcode': '1.5.3'
|
||||||
'swagger-ui-dist': '5.12.0'
|
'swagger-ui-dist': '5.17.2'
|
||||||
'swagger-ui-express': '5.0.0'
|
'swagger-ui-express': '5.0.0'
|
||||||
dev:
|
dev:
|
||||||
'chai': *chai
|
'chai': *chai
|
||||||
|
@ -218,12 +222,12 @@ dev:
|
||||||
'lodash.orderby': &_orderby '4.6.0'
|
'lodash.orderby': &_orderby '4.6.0'
|
||||||
'lodash.set': *_set
|
'lodash.set': *_set
|
||||||
'next': *next
|
'next': *next
|
||||||
'react': &react '18.2.0'
|
'react': &react '18.3.1'
|
||||||
'react-copy-to-clipboard': &reactCopyToClipboard '5.1.0'
|
'react-copy-to-clipboard': &reactCopyToClipboard '5.1.0'
|
||||||
'react-dom': *react
|
'react-dom': *react
|
||||||
'react-hotkeys-hook': &reactHotkeysHook '4.5.0'
|
'react-hotkeys-hook': &reactHotkeysHook '4.5.0'
|
||||||
'react-instantsearch-dom': &reactInstantsearchDom '6.40.4'
|
'react-instantsearch-dom': &reactInstantsearchDom '6.40.4'
|
||||||
'react-instantsearch-hooks-web': '6.47.3'
|
'react-instantsearch-hooks-web': &reactInstantsearchHooksWeb '6.47.3'
|
||||||
'react-swipeable': &reactSwipeable '7.0.1'
|
'react-swipeable': &reactSwipeable '7.0.1'
|
||||||
'react-timeago': &reactTimeago '7.2.0'
|
'react-timeago': &reactTimeago '7.2.0'
|
||||||
'rehype-autolink-headings': &rehypeAutolinkHeadings '7.1.0'
|
'rehype-autolink-headings': &rehypeAutolinkHeadings '7.1.0'
|
||||||
|
@ -256,7 +260,7 @@ lab:
|
||||||
'd3-drag': &d3drag '3.0.0'
|
'd3-drag': &d3drag '3.0.0'
|
||||||
'd3-selection': &d3selection '3.0.0'
|
'd3-selection': &d3selection '3.0.0'
|
||||||
'daisyui': *daisyui
|
'daisyui': *daisyui
|
||||||
'i18next': &i18next '23.10.1'
|
'i18next': &i18next '23.11.2'
|
||||||
'lodash.get': *_get
|
'lodash.get': *_get
|
||||||
'lodash.orderby': *_orderby
|
'lodash.orderby': *_orderby
|
||||||
'lodash.set': *_set
|
'lodash.set': *_set
|
||||||
|
@ -302,12 +306,18 @@ org:
|
||||||
'lodash.set': *_set
|
'lodash.set': *_set
|
||||||
'luxon': '3.4.4'
|
'luxon': '3.4.4'
|
||||||
'next': *next
|
'next': *next
|
||||||
|
'next-i18next': *nextI18next
|
||||||
'ora': *ora
|
'ora': *ora
|
||||||
|
'react': *react
|
||||||
|
'react-dom': *react
|
||||||
'react-dropzone': &dropzone '14.2.3'
|
'react-dropzone': &dropzone '14.2.3'
|
||||||
'react-hotkeys-hook': *reactHotkeysHook
|
'react-hotkeys-hook': *reactHotkeysHook
|
||||||
|
"react-i18next": *reactI18next
|
||||||
'react-instantsearch-dom': *reactInstantsearchDom
|
'react-instantsearch-dom': *reactInstantsearchDom
|
||||||
|
'react-instantsearch-hooks-web': *reactInstantsearchHooksWeb
|
||||||
'react-swipeable': *reactSwipeable
|
'react-swipeable': *reactSwipeable
|
||||||
'react-timeago': *reactTimeago
|
'react-timeago': *reactTimeago
|
||||||
|
'react-zoom-pan-pinch': &zoompanpinch '3.4.3'
|
||||||
'rehype-autolink-headings': *rehypeAutolinkHeadings
|
'rehype-autolink-headings': *rehypeAutolinkHeadings
|
||||||
'rehype-highlight': *rehypeHighlight
|
'rehype-highlight': *rehypeHighlight
|
||||||
'rehype-sanitize': *rehypeSanitize
|
'rehype-sanitize': *rehypeSanitize
|
||||||
|
@ -352,7 +362,7 @@ shared:
|
||||||
'react': *react
|
'react': *react
|
||||||
'react-dom': *react
|
'react-dom': *react
|
||||||
'react-timeago': *reactTimeago
|
'react-timeago': *reactTimeago
|
||||||
'react-zoom-pan-pinch': &zoompanpinch '3.4.3'
|
'react-zoom-pan-pinch': *zoompanpinch
|
||||||
'rehype-autolink-headings': *rehypeAutolinkHeadings
|
'rehype-autolink-headings': *rehypeAutolinkHeadings
|
||||||
'rehype-highlight': *rehypeHighlight
|
'rehype-highlight': *rehypeHighlight
|
||||||
'remark-frontmatter': &remarkfrontmatter '5.0.0'
|
'remark-frontmatter': &remarkfrontmatter '5.0.0'
|
||||||
|
|
|
@ -36,6 +36,8 @@ packageJson:
|
||||||
author: SeaZeeZee (https://github.com/SeaZeeZee)
|
author: SeaZeeZee (https://github.com/SeaZeeZee)
|
||||||
lab:
|
lab:
|
||||||
private: true
|
private: true
|
||||||
|
lily:
|
||||||
|
author: Anna Puk (https://github.com/anna-puk)
|
||||||
lucy:
|
lucy:
|
||||||
author: SeaZeeZee (https://github.com/SeaZeeZee)
|
author: SeaZeeZee (https://github.com/SeaZeeZee)
|
||||||
lunetius: &starf
|
lunetius: &starf
|
||||||
|
|
|
@ -103,6 +103,25 @@
|
||||||
"setSleeve"
|
"setSleeve"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"bibi": {
|
||||||
|
"code": "Jonathan Haas",
|
||||||
|
"description": "A FreeSewing pattern for a knit top body block",
|
||||||
|
"design": [
|
||||||
|
"Jonathan Haas"
|
||||||
|
],
|
||||||
|
"difficulty": 2,
|
||||||
|
"lab": true,
|
||||||
|
"org": true,
|
||||||
|
"tags": [
|
||||||
|
"blocks",
|
||||||
|
"tops"
|
||||||
|
],
|
||||||
|
"techniques": [
|
||||||
|
"curvedSeam",
|
||||||
|
"hem",
|
||||||
|
"flatSleeve"
|
||||||
|
]
|
||||||
|
},
|
||||||
"bob": {
|
"bob": {
|
||||||
"code": "Joost De Cock",
|
"code": "Joost De Cock",
|
||||||
"description": "A FreeSewing pattern for a bib",
|
"description": "A FreeSewing pattern for a bib",
|
||||||
|
@ -936,6 +955,22 @@
|
||||||
"curvedSeam"
|
"curvedSeam"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"umbra": {
|
||||||
|
"code": "Joost De Cock, Jonathan Haas",
|
||||||
|
"description": "A FreeSewing pattern for a basic, highly-customizable underwear pattern",
|
||||||
|
"design": "Joost De Cock, Jonathan Haas",
|
||||||
|
"difficulty": 2,
|
||||||
|
"lab": true,
|
||||||
|
"org": true,
|
||||||
|
"tags": [
|
||||||
|
"bottoms",
|
||||||
|
"underwear"
|
||||||
|
],
|
||||||
|
"techniques": [
|
||||||
|
"elastic",
|
||||||
|
"curvedSeam"
|
||||||
|
]
|
||||||
|
},
|
||||||
"wahid": {
|
"wahid": {
|
||||||
"code": "Joost De Cock",
|
"code": "Joost De Cock",
|
||||||
"description": "A FreeSewing pattern for a classic fitted waistcoat",
|
"description": "A FreeSewing pattern for a classic fitted waistcoat",
|
||||||
|
@ -1003,6 +1038,21 @@
|
||||||
"hem",
|
"hem",
|
||||||
"button"
|
"button"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"lily": {
|
||||||
|
"code": "Anna Puk, Joost De Cock",
|
||||||
|
"description": "A FreeSewing pattern for basic leggings",
|
||||||
|
"design": "Anna Puk",
|
||||||
|
"difficulty": 2,
|
||||||
|
"lab": true,
|
||||||
|
"org": true,
|
||||||
|
"tags": [
|
||||||
|
"bottoms"
|
||||||
|
],
|
||||||
|
"techniques": [
|
||||||
|
"elastic",
|
||||||
|
"curvedSeam",
|
||||||
|
"hem"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
35
config/trustees.mjs
Normal file
35
config/trustees.mjs
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* This defines the FreeSewing web of trust
|
||||||
|
* See: https://FreeSewing.dev/reference/trust
|
||||||
|
*/
|
||||||
|
export const trustees = {
|
||||||
|
1: {
|
||||||
|
x: 1306,
|
||||||
|
y: 319,
|
||||||
|
title: 'joost',
|
||||||
|
in: 'Antwerp',
|
||||||
|
},
|
||||||
|
132: {
|
||||||
|
x: 457,
|
||||||
|
y: 345,
|
||||||
|
title: 'woutervdub',
|
||||||
|
in: 'Seattle',
|
||||||
|
},
|
||||||
|
13050: {
|
||||||
|
x: 668,
|
||||||
|
y: 399,
|
||||||
|
title: 'karen',
|
||||||
|
in: 'Chicago',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are the connections between the trustees
|
||||||
|
* See: https://FreeSewing.dev/reference/trust
|
||||||
|
*/
|
||||||
|
export const connections = [
|
||||||
|
[1, 132],
|
||||||
|
[1, 13050],
|
||||||
|
]
|
||||||
|
|
||||||
|
export const lastUpdate = '20240402'
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -45,7 +45,7 @@ export const strap = {
|
||||||
msg: `albert:cutStrap`,
|
msg: `albert:cutStrap`,
|
||||||
notes: [sa ? 'flag:saIncluded' : 'flag:saExcluded', 'flag:partHiddenByExpand'],
|
notes: [sa ? 'flag:saIncluded' : 'flag:saExcluded', 'flag:partHiddenByExpand'],
|
||||||
replace: {
|
replace: {
|
||||||
width: units(strapWidth + extraSa),
|
width: units(strapWidth * 2 + extraSa),
|
||||||
length: units(strapLength + strapWidth * 2 + extraSa),
|
length: units(strapLength + strapWidth * 2 + extraSa),
|
||||||
},
|
},
|
||||||
suggest: {
|
suggest: {
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
1
designs/bibi/.prettierignore
Normal file
1
designs/bibi/.prettierignore
Normal file
|
@ -0,0 +1 @@
|
||||||
|
config/config.js
|
17
designs/bibi/CHANGELOG.md
Normal file
17
designs/bibi/CHANGELOG.md
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Change log for: @freesewing/bibi
|
||||||
|
|
||||||
|
|
||||||
|
## 3.0.0 (2023-09-30)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- All FreeSewing packages are now ESM only.
|
||||||
|
- All FreeSewing packages now use named exports.
|
||||||
|
- Dropped support for NodeJS 14. NodeJS 18 (LTS/hydrogen) or more recent is now required.
|
||||||
|
|
||||||
|
|
||||||
|
This is the **initial release**, and the start of this change log.
|
||||||
|
|
||||||
|
> Prior to version 2, FreeSewing was not a JavaScript project.
|
||||||
|
> As such, that history is out of scope for this change log.
|
||||||
|
|
162
designs/bibi/README.md
Normal file
162
designs/bibi/README.md
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
<p align='center'><a
|
||||||
|
href="https://www.npmjs.com/package/@freesewing/bibi"
|
||||||
|
title="@freesewing/bibi on NPM"
|
||||||
|
><img src="https://img.shields.io/npm/v/@freesewing/bibi.svg"
|
||||||
|
alt="@freesewing/bibi on NPM"/>
|
||||||
|
</a><a
|
||||||
|
href="https://opensource.org/licenses/MIT"
|
||||||
|
title="License: MIT"
|
||||||
|
><img src="https://img.shields.io/npm/l/@freesewing/bibi.svg?label=License"
|
||||||
|
alt="License: MIT"/>
|
||||||
|
</a><a
|
||||||
|
href="https://deepscan.io/dashboard#view=project&tid=2114&pid=2993&bid=23256"
|
||||||
|
title="Code quality on DeepScan"
|
||||||
|
><img src="https://deepscan.io/api/teams/2114/projects/2993/branches/23256/badge/grade.svg"
|
||||||
|
alt="Code quality on DeepScan"/>
|
||||||
|
</a><a
|
||||||
|
href="https://github.com/freesewing/freesewing/issues?q=is%3Aissue+is%3Aopen+label%3Apkg%3Abibi"
|
||||||
|
title="Open issues tagged pkg:bibi"
|
||||||
|
><img src="https://img.shields.io/github/issues/freesewing/freesewing/pkg:bibi.svg?label=Issues"
|
||||||
|
alt="Open issues tagged pkg:bibi"/>
|
||||||
|
</a><a
|
||||||
|
href="#contributors-"
|
||||||
|
title="All Contributors"
|
||||||
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
|
alt="All Contributors"/>
|
||||||
|
</a></p><p align='center'><a
|
||||||
|
href="https://twitter.com/freesewing_org"
|
||||||
|
title="Follow @freesewing_org on Twitter"
|
||||||
|
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-blue.svg?logo=twitter&logoColor=white&logoWidth=15"
|
||||||
|
alt="Follow @freesewing_org on Twitter"/>
|
||||||
|
</a><a
|
||||||
|
href="https://chat.freesewing.org"
|
||||||
|
title="Chat with us on Discord"
|
||||||
|
><img src="https://img.shields.io/discord/698854858052075530?label=Chat%20on%20Discord"
|
||||||
|
alt="Chat with us on Discord"/>
|
||||||
|
</a><a
|
||||||
|
href="https://freesewing.org/patrons/join"
|
||||||
|
title="Become a FreeSewing Patron"
|
||||||
|
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Support%20us-blueviolet.svg?logo=cash-app&logoColor=white&logoWidth=15"
|
||||||
|
alt="Become a FreeSewing Patron"/>
|
||||||
|
</a><a
|
||||||
|
href="https://instagram.com/freesewing_org"
|
||||||
|
title="Follow @freesewing_org on Twitter"
|
||||||
|
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-E4405F.svg?logo=instagram&logoColor=white&logoWidth=15"
|
||||||
|
alt="Follow @freesewing_org on Twitter"/>
|
||||||
|
</a></p>
|
||||||
|
|
||||||
|
# @freesewing/bibi
|
||||||
|
|
||||||
|
A FreeSewing pattern for a knit top body block
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# FreeSewing
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
>#### Support FreeSewing: Become a patron, or make a one-time donation 🥰
|
||||||
|
>
|
||||||
|
> FreeSewing is an open source project maintained by Joost De Cock and financially supported by the FreeSewing patrons.
|
||||||
|
>
|
||||||
|
> If you feel FreeSewing is worthwhile, and you can spend a few coins without
|
||||||
|
hardship, then you should [join us and become a patron](https://freesewing.org/community/join).
|
||||||
|
|
||||||
|
## What am I looking at? 🤔
|
||||||
|
|
||||||
|
This repository is the FreeSewing *monorepo* holding all FreeSewing's websites, documentation, designs, plugins, and other NPM packages.
|
||||||
|
|
||||||
|
This folder holds: @freesewing/bibi
|
||||||
|
|
||||||
|
If you're not entirely sure what to do or how to start, type this command:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm run tips
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> If you don't want to set up a dev environment, you can run it in your browser:
|
||||||
|
>
|
||||||
|
> [](https://gitpod.io/#https://github.com/freesewing/freesewing)
|
||||||
|
>
|
||||||
|
> We recommend that you fork our repository and then
|
||||||
|
> put `gitpod.io/#<entire-url-of-your-fork` into a browser
|
||||||
|
> to start up a browser-based dev environment of your own.
|
||||||
|
|
||||||
|
## About FreeSewing 💀
|
||||||
|
|
||||||
|
Where the world of makers and developers collide, that's where you'll find FreeSewing.
|
||||||
|
|
||||||
|
If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate
|
||||||
|
sewing patterns adapted to your measurements.
|
||||||
|
|
||||||
|
If you're a developer, the FreeSewing documentation lives at [freesewing.dev](https://freesewing.dev/).
|
||||||
|
The FreeSewing [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox
|
||||||
|
for parametric design of sewing patterns. But FreeSewing also provides a range
|
||||||
|
of [plugins](https://freesewing.dev/reference/plugins/) that further extend the
|
||||||
|
functionality of the platform.
|
||||||
|
|
||||||
|
If you have NodeJS installed, you can try it right now by running:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx @freesewing/new-design
|
||||||
|
```
|
||||||
|
|
||||||
|
Getting started guides are available for:
|
||||||
|
- [Linux](https://freesewing.dev/tutorials/getting-started-linux/)
|
||||||
|
- [MacOS](https://freesewing.dev/tutorials/getting-started-mac/)
|
||||||
|
- [Windows](https://freesewing.dev/tutorials/getting-started-windows/)
|
||||||
|
|
||||||
|
The [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) will
|
||||||
|
show you how to create your first parametric design.
|
||||||
|
|
||||||
|
## Getting started ⚡
|
||||||
|
|
||||||
|
To get started with FreeSewing, you can spin up our development environment with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx @freesewing/new-design
|
||||||
|
```
|
||||||
|
|
||||||
|
To work with FreeSewing's monorepo, you'll need [NodeJS v18](https://nodejs.org), [lerna](https://lerna.js.org/) and [yarn](https://yarnpkg.com/) on your system.
|
||||||
|
Once you have those, clone (or fork) this repo and run `yarn kickstart`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone git@github.com:freesewing/freesewing.git
|
||||||
|
cd freesewing
|
||||||
|
yarn kickstart
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links 👩💻
|
||||||
|
|
||||||
|
**Official channels**
|
||||||
|
|
||||||
|
- 💻 Makers website: [FreeSewing.org](https://freesewing.org)
|
||||||
|
- 💻 Developers website: [FreeSewing.dev](https://freesewing.dev)
|
||||||
|
- ✅ [Support](https://github.com/freesewing/freesewing/issues/new/choose),
|
||||||
|
[Issues](https://github.com/freesewing/freesewing/issues) &
|
||||||
|
[Discussions](https://github.com/freesewing/freesewing/discussions) on
|
||||||
|
[GitHub](https://github.com/freesewing/freesewing)
|
||||||
|
|
||||||
|
**Social media**
|
||||||
|
|
||||||
|
- 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
|
||||||
|
- 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
|
||||||
|
|
||||||
|
**Places the FreeSewing community hangs out**
|
||||||
|
|
||||||
|
- 💬 [Discord](https://discord.freesewing.org/)
|
||||||
|
- 💬 [Facebook](https://www.facebook.com/groups/627769821272714/)
|
||||||
|
- 💬 [Reddit](https://www.reddit.com/r/freesewing/)
|
||||||
|
|
||||||
|
## License: MIT 🤓
|
||||||
|
|
||||||
|
© [Joost De Cock](https://github.com/joostdecock).
|
||||||
|
See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
|
||||||
|
|
||||||
|
## Where to get help 🤯
|
||||||
|
|
||||||
|
For [Support](https://github.com/freesewing/freesewing/issues/new/choose),
|
||||||
|
please use the [Issues](https://github.com/freesewing/freesewing/issues) &
|
||||||
|
[Discussions](https://github.com/freesewing/freesewing/discussions) on
|
||||||
|
[GitHub](https://github.com/freesewing/freesewing).
|
||||||
|
|
35
designs/bibi/build.mjs
Normal file
35
designs/bibi/build.mjs
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/* This script will build the package with esbuild */
|
||||||
|
import esbuild from 'esbuild'
|
||||||
|
import pkg from './package.json' assert { type: 'json' }
|
||||||
|
|
||||||
|
// Create banner based on package info
|
||||||
|
const banner = `/**
|
||||||
|
* ${pkg.name} | v${pkg.version}
|
||||||
|
* ${pkg.description}
|
||||||
|
* (c) ${new Date().getFullYear()} ${pkg.author}
|
||||||
|
* @license ${pkg.license}
|
||||||
|
*/`
|
||||||
|
|
||||||
|
// Shared esbuild options
|
||||||
|
const options = {
|
||||||
|
banner: { js: banner },
|
||||||
|
bundle: true,
|
||||||
|
entryPoints: ['src/index.mjs'],
|
||||||
|
format: 'esm',
|
||||||
|
outfile: 'dist/index.mjs',
|
||||||
|
external: ['@freesewing'],
|
||||||
|
metafile: process.env.VERBOSE ? true : false,
|
||||||
|
minify: process.env.NO_MINIFY ? false : true,
|
||||||
|
sourcemap: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Let esbuild generate the build
|
||||||
|
const build = async () => {
|
||||||
|
const result = await esbuild.build(options).catch(() => process.exit(1))
|
||||||
|
|
||||||
|
if (process.env.VERBOSE) {
|
||||||
|
const info = await esbuild.analyzeMetafile(result.metafile)
|
||||||
|
console.log(info)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
build()
|
4
designs/bibi/data.mjs
Normal file
4
designs/bibi/data.mjs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
// This file is auto-generated | All changes you make will be overwritten.
|
||||||
|
export const name = '@freesewing/bibi'
|
||||||
|
export const version = '3.2.0'
|
||||||
|
export const data = { name, version }
|
50
designs/bibi/i18n/de.json
Normal file
50
designs/bibi/i18n/de.json
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"t": "Teagan, das T-Shirt",
|
||||||
|
"d": "Teagan ist ein Schnittmuster für ein passgenaues T-Shirt.",
|
||||||
|
"p": {
|
||||||
|
"back": "Rückseite",
|
||||||
|
"front": "Vorderseite",
|
||||||
|
"sleeve": "Ärmel"
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"fullLengthFromHps": "Volle Länge (vom höchsten Schulterpunkt)"
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"draftForHighBust": {
|
||||||
|
"t": "Entwurf für hohe Büste",
|
||||||
|
"d": "Zeichnen Sie das Muster für die hohe Büstenmessung (falls vorhanden) statt der (vollen) Truhe. Dies wird zu einem besser angepassten Kleidungsstück für Brustkleidung führen."
|
||||||
|
},
|
||||||
|
"sleeveEase": {
|
||||||
|
"t": "Bequemlichkeitszugabe Ärmel",
|
||||||
|
"d": "Größe der Bequemlichkeitszugabe an den Ärmeln"
|
||||||
|
},
|
||||||
|
"sleeveLength": {
|
||||||
|
"t": "Ärmellänge",
|
||||||
|
"d": "Steuert die Länge deiner Ärmel"
|
||||||
|
},
|
||||||
|
"necklineBend": {
|
||||||
|
"t": "Krümmung Halsausschnitt",
|
||||||
|
"d": "Steuert die Krümmung des Halsausschnitts."
|
||||||
|
},
|
||||||
|
"necklineDepth": {
|
||||||
|
"t": "Ausschnitttiefe",
|
||||||
|
"d": "Steuert, wie tief der Halsausschnitt fällt."
|
||||||
|
},
|
||||||
|
"necklineWidth": {
|
||||||
|
"t": "Ausschnittbreite",
|
||||||
|
"d": "Steuert die Breite des Halsausschnitts."
|
||||||
|
},
|
||||||
|
"curveToWaist": {
|
||||||
|
"t": "Fit the waist",
|
||||||
|
"d": "Whether or not to fit the waist or rahter only fit chest and hips."
|
||||||
|
},
|
||||||
|
"curvedWaistEase": {
|
||||||
|
"t": "Waist ease",
|
||||||
|
"d": "Ease at the waist (only applies when the waist is fitted)."
|
||||||
|
},
|
||||||
|
"hipsEase": {
|
||||||
|
"t": "Hips ease",
|
||||||
|
"d": "Ease at the hips."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
129
designs/bibi/i18n/en.json
Normal file
129
designs/bibi/i18n/en.json
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
{
|
||||||
|
"t": "Bibi body block",
|
||||||
|
"d": "Bibi is a multifunctional building block for knit tops and dresses.",
|
||||||
|
"p": {
|
||||||
|
"back": "Back",
|
||||||
|
"front": "Front",
|
||||||
|
"sleeve": "Sleeve"
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"dartNo.t": "No bust dart",
|
||||||
|
"dartNo.d": "Gather fabric instead",
|
||||||
|
"dartYes.t": "Create a bust dart",
|
||||||
|
"dartYes.d": "If necessary, draft a bust dart to match side seam lengths",
|
||||||
|
"sleevesNo.t": "Sleeveless",
|
||||||
|
"sleevesNo.d": "Draft the pattern without sleeves",
|
||||||
|
"sleevesYes.t": "With sleeves",
|
||||||
|
"sleevesYes.d": "Draft the pattern with sleeves",
|
||||||
|
"fitWaistNo.t": "Don't fit the waist",
|
||||||
|
"fitWaistNo.d": "Create a loose fit and a more rectangular shape",
|
||||||
|
"fitWaistYes.t": "Fit the waist",
|
||||||
|
"fitWaistYes.d": "Create a more body-fitting shape",
|
||||||
|
"length.underbust.t": "Underbust",
|
||||||
|
"length.underbust.d": "Create a bralette top that only covers the bust.",
|
||||||
|
"length.waist.t": "Waist",
|
||||||
|
"length.waist.d": "Create a crop top.",
|
||||||
|
"length.hips.t": "Hips",
|
||||||
|
"length.hips.d": "Create a hip-length top.",
|
||||||
|
"length.seat.t": "Seat",
|
||||||
|
"length.seat.d": "Create a seat-length top.",
|
||||||
|
"length.knee.t": "Knee",
|
||||||
|
"length.knee.d": "Create a knee-length dress.",
|
||||||
|
"length.floor.t": "Floor",
|
||||||
|
"length.floor.d": "Create a floor-length dress. Use a negative length bonus to prevent the garment from actually dragging on the floor."
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"draftForHighBust": {
|
||||||
|
"t": "Bust adjustment",
|
||||||
|
"d": "If the pattern should be drafted with a basic full bust adjustment (FBA). This will result in a more fitted garment for people with breasts."
|
||||||
|
},
|
||||||
|
"draftForHighBustYes": {
|
||||||
|
"t": "Draft with bust adjustment",
|
||||||
|
"d": "Suggested for most people with breasts. This option only has an effect if the optional bust-related measurements are available."
|
||||||
|
},
|
||||||
|
"draftForHighBustNo": {
|
||||||
|
"t": "Draft without bust adjustment",
|
||||||
|
"d": "Drafts a pattern using the chest measurement only."
|
||||||
|
},
|
||||||
|
"cuffEase": {
|
||||||
|
"t": "Sleeve fullness",
|
||||||
|
"d": "Controls how wide the sleeves are."
|
||||||
|
},
|
||||||
|
"sleeveLength": {
|
||||||
|
"t": "Sleeve length",
|
||||||
|
"d": "Controls the length of your sleeves"
|
||||||
|
},
|
||||||
|
"necklineBend": {
|
||||||
|
"t": "Front Neckline curvature",
|
||||||
|
"d": "Controls the curvature of the front neckline."
|
||||||
|
},
|
||||||
|
"backNeckBend": {
|
||||||
|
"t": "Back Neckline curvature",
|
||||||
|
"d": "Controls the curvature of the back neckline."
|
||||||
|
},
|
||||||
|
"necklineDepth": {
|
||||||
|
"t": "Front Neckline depth",
|
||||||
|
"d": "Controls how deep the neck opening plunges down at the front."
|
||||||
|
},
|
||||||
|
"backNeckCutout": {
|
||||||
|
"t": "Back Neckline depth",
|
||||||
|
"d": "Controls how deep the neck opening plunges down on the back."
|
||||||
|
},
|
||||||
|
"necklineWidth": {
|
||||||
|
"t": "Neckline width",
|
||||||
|
"d": "Controls the width of the neck opening."
|
||||||
|
},
|
||||||
|
"fitWaist": {
|
||||||
|
"t": "Fit the waist",
|
||||||
|
"d": "Whether or not to fit the waist."
|
||||||
|
},
|
||||||
|
"waistEase": {
|
||||||
|
"t": "Waist ease",
|
||||||
|
"d": "Ease at the waist (only applies when the waist is fitted)."
|
||||||
|
},
|
||||||
|
"hipsEase": {
|
||||||
|
"t": "Hips ease",
|
||||||
|
"d": "Ease at the hips."
|
||||||
|
},
|
||||||
|
"seatEase": {
|
||||||
|
"t": "Seat ease",
|
||||||
|
"d": "Ease at the seat."
|
||||||
|
},
|
||||||
|
"bustEase": {
|
||||||
|
"t": "Bust ease",
|
||||||
|
"d": "Ease at the bust. Only applies when bust adjustment is enabled."
|
||||||
|
},
|
||||||
|
"flare": {
|
||||||
|
"t": "Flare",
|
||||||
|
"d": "How much fabric to use at the bottom hem of the design. Only applies when the design goes below the seat."
|
||||||
|
},
|
||||||
|
"dart": {
|
||||||
|
"t": "Allow bust dart",
|
||||||
|
"d": "Allow creating a bust dart if this is necessary"
|
||||||
|
},
|
||||||
|
"sleeves": {
|
||||||
|
"t": "Sleeves",
|
||||||
|
"d": "Draft the pattern with sleeves"
|
||||||
|
},
|
||||||
|
"strapWidth": {
|
||||||
|
"t": "Strap width",
|
||||||
|
"d": "How wide the shoulder straps are. Only applies when sleeves are disabled."
|
||||||
|
},
|
||||||
|
"armholeCurveFront": {
|
||||||
|
"t": "Armhole curve front",
|
||||||
|
"d": "How round the armhole curve is at the front. Higher options expose more skin."
|
||||||
|
},
|
||||||
|
"armholeCurveBack": {
|
||||||
|
"t": "Armhole curve back",
|
||||||
|
"d": "How round the armhole curve is at the back. Higher options leave the shoulder blades free."
|
||||||
|
},
|
||||||
|
"armholeDropBack": {
|
||||||
|
"t": "Armhole drop back",
|
||||||
|
"d": "How much the back armhole curves towards the bottom."
|
||||||
|
},
|
||||||
|
"length": {
|
||||||
|
"t": "Length",
|
||||||
|
"d": "Which measurement line to use for the bottom hem. You can do fine adjustments using the bonus length option."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
50
designs/bibi/i18n/es.json
Normal file
50
designs/bibi/i18n/es.json
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"t": "Teagan, camiseta",
|
||||||
|
"d": "Teagan es un patrón de camiseta entallada.",
|
||||||
|
"p": {
|
||||||
|
"back": "Atrás",
|
||||||
|
"front": "Frente",
|
||||||
|
"sleeve": "Manga"
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"fullLengthFromHps": "Longitud completa (de HPS)"
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"draftForHighBust": {
|
||||||
|
"t": "Borrador para alta caída",
|
||||||
|
"d": "Borra el patrón para la medición alta del polvo (si está disponible) en lugar del cofre (completo). Esto dará lugar a una prenda más ajustada para las personas con senos."
|
||||||
|
},
|
||||||
|
"sleeveEase": {
|
||||||
|
"t": "Manga fácil",
|
||||||
|
"d": "Cantidad de facilidad de sus mangas"
|
||||||
|
},
|
||||||
|
"sleeveLength": {
|
||||||
|
"t": "Longitud de la manga",
|
||||||
|
"d": "Controla la longitud de las mangas"
|
||||||
|
},
|
||||||
|
"necklineBend": {
|
||||||
|
"t": "Curvatura neckline",
|
||||||
|
"d": "Controla la curvatura del cuello."
|
||||||
|
},
|
||||||
|
"necklineDepth": {
|
||||||
|
"t": "Profundidad del cuello",
|
||||||
|
"d": "Controla la profundidad de la abertura del cuello."
|
||||||
|
},
|
||||||
|
"necklineWidth": {
|
||||||
|
"t": "Neckline width",
|
||||||
|
"d": "Controla el ancho de la abertura del cuello."
|
||||||
|
},
|
||||||
|
"curveToWaist": {
|
||||||
|
"t": "Fit the waist",
|
||||||
|
"d": "Whether or not to fit the waist or rahter only fit chest and hips."
|
||||||
|
},
|
||||||
|
"curvedWaistEase": {
|
||||||
|
"t": "Waist ease",
|
||||||
|
"d": "Ease at the waist (only applies when the waist is fitted)."
|
||||||
|
},
|
||||||
|
"hipsEase": {
|
||||||
|
"t": "Hips ease",
|
||||||
|
"d": "Ease at the hips."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
50
designs/bibi/i18n/fr.json
Normal file
50
designs/bibi/i18n/fr.json
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"t": "T-shirt Teagan",
|
||||||
|
"d": "Teagan est un T-shirt ajusté.",
|
||||||
|
"p": {
|
||||||
|
"back": "Retour",
|
||||||
|
"front": "Avant",
|
||||||
|
"sleeve": "Manche"
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"fullLengthFromHps": "Longueur complète (à partir du haut de l'épaule)"
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"draftForHighBust": {
|
||||||
|
"t": "Tracé pour le buste supérieur",
|
||||||
|
"d": "Tracer le patron pour la mesure de tour de poitrine supérieure (si disponible) plutôt que la poitrine (pleine). Il en résultera un vêtement plus ajusté pour les personnes qui ont des seins."
|
||||||
|
},
|
||||||
|
"sleeveEase": {
|
||||||
|
"t": "Aisance des manches",
|
||||||
|
"d": "Quantité d'aisance de vos manches"
|
||||||
|
},
|
||||||
|
"sleeveLength": {
|
||||||
|
"t": "Longueur des manches",
|
||||||
|
"d": "Contrôle la longueur de vos manches"
|
||||||
|
},
|
||||||
|
"necklineBend": {
|
||||||
|
"t": "Courbure de l'encolure",
|
||||||
|
"d": "Contrôle la courbure de l'encolure."
|
||||||
|
},
|
||||||
|
"necklineDepth": {
|
||||||
|
"t": "Profondeur de l'encolure",
|
||||||
|
"d": "Contrôle la profondeur de l'encolure."
|
||||||
|
},
|
||||||
|
"necklineWidth": {
|
||||||
|
"t": "Largeur d'encolure",
|
||||||
|
"d": "Contrôle la largeur de l'encolure."
|
||||||
|
},
|
||||||
|
"curveToWaist": {
|
||||||
|
"t": "Fit the waist",
|
||||||
|
"d": "Whether or not to fit the waist or rahter only fit chest and hips."
|
||||||
|
},
|
||||||
|
"curvedWaistEase": {
|
||||||
|
"t": "Waist ease",
|
||||||
|
"d": "Ease at the waist (only applies when the waist is fitted)."
|
||||||
|
},
|
||||||
|
"hipsEase": {
|
||||||
|
"t": "Hips ease",
|
||||||
|
"d": "Ease at the hips."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
8
designs/bibi/i18n/index.mjs
Normal file
8
designs/bibi/i18n/index.mjs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
import en from './en.json' assert { type: 'json' }
|
||||||
|
import de from './de.json' assert { type: 'json' }
|
||||||
|
import es from './es.json' assert { type: 'json' }
|
||||||
|
import fr from './fr.json' assert { type: 'json' }
|
||||||
|
import nl from './nl.json' assert { type: 'json' }
|
||||||
|
import uk from './uk.json' assert { type: 'json' }
|
||||||
|
|
||||||
|
export const i18n = { en, de, es, fr, nl, uk }
|
50
designs/bibi/i18n/nl.json
Normal file
50
designs/bibi/i18n/nl.json
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"t": "Teagan T-shirt",
|
||||||
|
"d": "Teagan is een patroon voor een aansluitend t-shirt.",
|
||||||
|
"p": {
|
||||||
|
"back": "Achterzijde",
|
||||||
|
"front": "Voorzijde",
|
||||||
|
"sleeve": "Mouw"
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"fullLengthFromHps": "Afgewerkte lengte (vanaf HPS)"
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"draftForHighBust": {
|
||||||
|
"t": "Teken voor hoge buste",
|
||||||
|
"d": "Teken het patroon voor de hoge bustemaat (indien beschikbaar) in plaats van de volle borstomtrek. Dit heeft een aansluitender kledingstuk als resultaat voor mensen met borsten."
|
||||||
|
},
|
||||||
|
"sleeveEase": {
|
||||||
|
"t": "Overwijdte mouw",
|
||||||
|
"d": "De hoeveelheid extra ruimte in je mouwen"
|
||||||
|
},
|
||||||
|
"sleeveLength": {
|
||||||
|
"t": "Mouwlengte",
|
||||||
|
"d": "Bepaalt de lengte van je mouwen"
|
||||||
|
},
|
||||||
|
"necklineBend": {
|
||||||
|
"t": "Curve halslijn",
|
||||||
|
"d": "Bepaalt de curve van de halsuitsnijding."
|
||||||
|
},
|
||||||
|
"necklineDepth": {
|
||||||
|
"t": "Diepte halsuitsnijding",
|
||||||
|
"d": "Bepaalt hoe diep de halsopening is."
|
||||||
|
},
|
||||||
|
"necklineWidth": {
|
||||||
|
"t": "Breedte halsuitsnijding",
|
||||||
|
"d": "Bepaalt hoe breed de halsopening is."
|
||||||
|
},
|
||||||
|
"curveToWaist": {
|
||||||
|
"t": "Fit the waist",
|
||||||
|
"d": "Whether or not to fit the waist or rahter only fit chest and hips."
|
||||||
|
},
|
||||||
|
"curvedWaistEase": {
|
||||||
|
"t": "Waist ease",
|
||||||
|
"d": "Ease at the waist (only applies when the waist is fitted)."
|
||||||
|
},
|
||||||
|
"hipsEase": {
|
||||||
|
"t": "Hips ease",
|
||||||
|
"d": "Ease at the hips."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
50
designs/bibi/i18n/uk.json
Normal file
50
designs/bibi/i18n/uk.json
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"t": "Teagan T-shirt",
|
||||||
|
"d": "Teagan is a fitted T-shirt pattern.",
|
||||||
|
"p": {
|
||||||
|
"back": "Back",
|
||||||
|
"front": "Front",
|
||||||
|
"sleeve": "Sleeve"
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"fullLengthFromHps": "Full length (from HPS)"
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"draftForHighBust": {
|
||||||
|
"t": "Draft for high bust",
|
||||||
|
"d": "Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts."
|
||||||
|
},
|
||||||
|
"sleeveEase": {
|
||||||
|
"t": "Sleeve ease",
|
||||||
|
"d": "Amount of ease of your sleeves"
|
||||||
|
},
|
||||||
|
"sleeveLength": {
|
||||||
|
"t": "Sleeve length",
|
||||||
|
"d": "Controls the length of your sleeves"
|
||||||
|
},
|
||||||
|
"necklineBend": {
|
||||||
|
"t": "Neckline curvature",
|
||||||
|
"d": "Controls the curvature of the neckline."
|
||||||
|
},
|
||||||
|
"necklineDepth": {
|
||||||
|
"t": "Neckline depth",
|
||||||
|
"d": "Controls how deep the neck opening plunges down."
|
||||||
|
},
|
||||||
|
"necklineWidth": {
|
||||||
|
"t": "Neckline width",
|
||||||
|
"d": "Controls the width of the neck opening."
|
||||||
|
},
|
||||||
|
"curveToWaist": {
|
||||||
|
"t": "Fit the waist",
|
||||||
|
"d": "Whether or not to fit the waist or rahter only fit chest and hips."
|
||||||
|
},
|
||||||
|
"curvedWaistEase": {
|
||||||
|
"t": "Waist ease",
|
||||||
|
"d": "Ease at the waist (only applies when the waist is fitted)."
|
||||||
|
},
|
||||||
|
"hipsEase": {
|
||||||
|
"t": "Hips ease",
|
||||||
|
"d": "Ease at the hips."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
72
designs/bibi/package.json
Normal file
72
designs/bibi/package.json
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
{
|
||||||
|
"name": "@freesewing/bibi",
|
||||||
|
"version": "3.2.0",
|
||||||
|
"description": "A FreeSewing pattern for a knit top body block",
|
||||||
|
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||||
|
"homepage": "https://freesewing.org/",
|
||||||
|
"repository": "github:freesewing/freesewing",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/freesewing/freesewing/issues"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "individual",
|
||||||
|
"url": "https://freesewing.org/patrons/join"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"freesewing",
|
||||||
|
"design",
|
||||||
|
"diy",
|
||||||
|
"fashion",
|
||||||
|
"made to measure",
|
||||||
|
"parametric design",
|
||||||
|
"pattern",
|
||||||
|
"sewing",
|
||||||
|
"sewing pattern"
|
||||||
|
],
|
||||||
|
"type": "module",
|
||||||
|
"module": "dist/index.mjs",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"internal": "./src/index.mjs",
|
||||||
|
"default": "./dist/index.mjs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "node build.mjs",
|
||||||
|
"build:all": "yarn build",
|
||||||
|
"clean": "rimraf dist",
|
||||||
|
"mbuild": "NO_MINIFY=1 node build.mjs",
|
||||||
|
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
|
||||||
|
"test": "npx mocha tests/*.test.mjs",
|
||||||
|
"vbuild": "VERBOSE=1 node build.mjs",
|
||||||
|
"lab": "cd ../../sites/lab && yarn start",
|
||||||
|
"tips": "node ../../scripts/help.mjs",
|
||||||
|
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
|
||||||
|
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
|
||||||
|
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
|
||||||
|
"wbuild": "node build.mjs",
|
||||||
|
"wbuild:all": "yarn wbuild"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@freesewing/core": "3.2.0"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"devDependencies": {
|
||||||
|
"mocha": "10.3.0",
|
||||||
|
"chai": "5.1.0",
|
||||||
|
"@freesewing/models": "3.2.0",
|
||||||
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist/*",
|
||||||
|
"README.md"
|
||||||
|
],
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public",
|
||||||
|
"tag": "latest"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 18.17.0 <22"
|
||||||
|
}
|
||||||
|
}
|
273
designs/bibi/src/back.mjs
Normal file
273
designs/bibi/src/back.mjs
Normal file
|
@ -0,0 +1,273 @@
|
||||||
|
import { base } from '@freesewing/brian'
|
||||||
|
import {
|
||||||
|
adjustSidePoints,
|
||||||
|
constructBackHem,
|
||||||
|
constructBackPoints,
|
||||||
|
correctArmHole,
|
||||||
|
createArmHoles,
|
||||||
|
plotSideLineMeasurements,
|
||||||
|
} from './shared.mjs'
|
||||||
|
import { sleeve } from './sleeve.mjs'
|
||||||
|
|
||||||
|
export const back = {
|
||||||
|
name: 'bibi.back',
|
||||||
|
from: base,
|
||||||
|
measurements: ['hips', 'waist', 'hpsToWaistBack', 'chest', 'seat', 'seatBack', 'waistToSeat'],
|
||||||
|
optionalMeasurements: ['bustSpan', 'highBust', 'waistToUnderbust', 'waistToKnee', 'waistToFloor'],
|
||||||
|
hide: { from: true },
|
||||||
|
after: sleeve,
|
||||||
|
options: {
|
||||||
|
// Brian overrides
|
||||||
|
s3Collar: 0,
|
||||||
|
s3Armhole: 0,
|
||||||
|
brianFitSleeve: true,
|
||||||
|
brianFitCollar: false,
|
||||||
|
bicepsEase: 0.05,
|
||||||
|
collarEase: 0,
|
||||||
|
shoulderSlopeReduction: 0,
|
||||||
|
sleeveWidthGuarantee: 0.85,
|
||||||
|
frontArmholeDeeper: 0.01,
|
||||||
|
legacyArmholeDepth: false,
|
||||||
|
shoulderEase: { pct: 0, min: -2, max: 6, menu: 'fit' },
|
||||||
|
// Note: we reuse Brian's cuff ease as "armhole fullness"
|
||||||
|
cuffEase: {
|
||||||
|
pct: 20,
|
||||||
|
min: 0,
|
||||||
|
max: 200,
|
||||||
|
menu: (settings, mergedOptions) =>
|
||||||
|
mergedOptions.sleeves === false ? false : 'style.sleeves',
|
||||||
|
},
|
||||||
|
armholeDepth: {
|
||||||
|
pct: 2,
|
||||||
|
min: -10,
|
||||||
|
max: 50,
|
||||||
|
menu: (settings, mergedOptions) =>
|
||||||
|
mergedOptions?.legacyArmholeDepth ? false : 'style.sleeves',
|
||||||
|
},
|
||||||
|
armholeCurveBack: {
|
||||||
|
pct: 30,
|
||||||
|
min: -10,
|
||||||
|
max: 120,
|
||||||
|
menu: (settings, mergedOptions) => (mergedOptions.sleeves ? false : 'style.sleeves'),
|
||||||
|
},
|
||||||
|
armholeDropBack: {
|
||||||
|
pct: 20,
|
||||||
|
min: -50,
|
||||||
|
max: 50,
|
||||||
|
menu: (settings, mergedOptions) => (mergedOptions.sleeves ? false : 'style.sleeves'),
|
||||||
|
},
|
||||||
|
|
||||||
|
lengthBonus: { pct: 0, min: -30, max: 30, menu: 'style.length' },
|
||||||
|
draftForHighBust: { bool: true, menu: 'fit' },
|
||||||
|
// Bibi specific
|
||||||
|
fitWaist: { bool: true, menu: 'fit', order: 'EBA' },
|
||||||
|
waistEase: {
|
||||||
|
pct: 1,
|
||||||
|
min: -10,
|
||||||
|
max: 20,
|
||||||
|
menu: (settings, mergedOptions) => (mergedOptions.fitWaist ? 'fit' : false),
|
||||||
|
order: 'EBB',
|
||||||
|
},
|
||||||
|
hipsEase: { pct: 2, min: -5, max: 50, menu: 'fit', order: 'ECA' },
|
||||||
|
seatEase: { pct: 2, min: -5, max: 50, menu: 'fit', order: 'EDA' },
|
||||||
|
chestEase: { pct: 2, min: -5, max: 25, menu: 'fit', order: 'EAB' },
|
||||||
|
|
||||||
|
length: {
|
||||||
|
dflt: 'seat',
|
||||||
|
list: ['underbust', 'waist', 'hips', 'seat', 'knee', 'floor'],
|
||||||
|
menu: 'style.length',
|
||||||
|
},
|
||||||
|
flare: {
|
||||||
|
pct: 5,
|
||||||
|
min: 0,
|
||||||
|
max: 150,
|
||||||
|
menu: (settings, mergedOptions) =>
|
||||||
|
(mergedOptions.length === 'seat' && mergedOptions.lengthBonus > 0) ||
|
||||||
|
mergedOptions.length === 'knee' ||
|
||||||
|
mergedOptions.length === 'floor'
|
||||||
|
? 'style.length'
|
||||||
|
: false,
|
||||||
|
},
|
||||||
|
necklineWidth: { pct: 30, min: 10, max: 90, menu: 'style' },
|
||||||
|
strapWidth: {
|
||||||
|
pct: 40,
|
||||||
|
min: 5,
|
||||||
|
max: 100,
|
||||||
|
menu: (settings, mergedOptions) => (mergedOptions.sleeves ? false : 'style.sleeves'),
|
||||||
|
},
|
||||||
|
sleeves: { bool: true, menu: 'style.sleeves' },
|
||||||
|
|
||||||
|
backNeckCutout: { pct: 15, min: 6, max: 110, menu: 'style' },
|
||||||
|
backNeckBend: { pct: 50, min: 0, max: 70, menu: 'style' },
|
||||||
|
},
|
||||||
|
draft: bibiBack,
|
||||||
|
}
|
||||||
|
|
||||||
|
function bibiBack({
|
||||||
|
store,
|
||||||
|
sa,
|
||||||
|
Point,
|
||||||
|
points,
|
||||||
|
Path,
|
||||||
|
paths,
|
||||||
|
Snippet,
|
||||||
|
snippets,
|
||||||
|
options,
|
||||||
|
measurements,
|
||||||
|
macro,
|
||||||
|
complete,
|
||||||
|
utils,
|
||||||
|
part,
|
||||||
|
}) {
|
||||||
|
// Hide Brian paths
|
||||||
|
for (const key of Object.keys(paths)) paths[key].hide()
|
||||||
|
|
||||||
|
// Re-use points for deeper armhole at the front
|
||||||
|
points.armholePitchCp1 = points.backArmholePitchCp1
|
||||||
|
points.armholePitch = points.backArmholePitch
|
||||||
|
points.armholePitchCp2 = points.backArmholePitchCp2
|
||||||
|
|
||||||
|
// clean up some unnecessary/confusing points
|
||||||
|
delete points.frontArmholePitchCp1
|
||||||
|
delete points.frontArmholePitch
|
||||||
|
delete points.frontArmholePitchCp2
|
||||||
|
delete points.backArmholePitchCp1
|
||||||
|
delete points.backArmholePitch
|
||||||
|
delete points.backArmholePitchCp2
|
||||||
|
delete points.cfNeck
|
||||||
|
delete points.cfNeckCp1
|
||||||
|
|
||||||
|
constructBackPoints(points, Point, measurements, options)
|
||||||
|
|
||||||
|
adjustSidePoints(points, options)
|
||||||
|
|
||||||
|
correctArmHole(points, paths, Path, options, utils)
|
||||||
|
|
||||||
|
points.cbHem = new Point(0, points.cbWaist.y + measurements.waistToHips * options.lengthBonus)
|
||||||
|
|
||||||
|
constructBackHem(points, measurements, options, Point, paths, Path)
|
||||||
|
|
||||||
|
store.set('backSideSeamLength', paths.sideSeam.length())
|
||||||
|
|
||||||
|
const strapWidth = options.sleeves ? 0 : options.strapWidth
|
||||||
|
points.neck = points.hps.shiftFractionTowards(
|
||||||
|
points.shoulder,
|
||||||
|
options.necklineWidth * (1 - strapWidth)
|
||||||
|
)
|
||||||
|
|
||||||
|
points.cbNeck = new Point(
|
||||||
|
0,
|
||||||
|
points.neck.y + options.backNeckCutout * points.neck.dy(points.cbChest)
|
||||||
|
)
|
||||||
|
points.cbNeckCp1 = points.cbNeck.shift(0, points.hps.x * options.backNeckBend * 2)
|
||||||
|
points.neckCp2 = points.neck
|
||||||
|
.shiftTowards(points.shoulder, points.neck.dy(points.cbNeck) * (0.2 + options.backNeckBend))
|
||||||
|
.rotate(-90, points.neck)
|
||||||
|
|
||||||
|
paths.backNeck = new Path()
|
||||||
|
.move(points.neck)
|
||||||
|
.curve(points.neckCp2, points.cbNeckCp1, points.cbNeck)
|
||||||
|
.addClass('fabric')
|
||||||
|
createArmHoles(
|
||||||
|
options,
|
||||||
|
store,
|
||||||
|
points,
|
||||||
|
paths,
|
||||||
|
Path,
|
||||||
|
snippets,
|
||||||
|
Snippet,
|
||||||
|
strapWidth,
|
||||||
|
options.armholeCurveBack,
|
||||||
|
options.armholeDropBack,
|
||||||
|
utils,
|
||||||
|
'bnotch'
|
||||||
|
)
|
||||||
|
|
||||||
|
paths.centerLine = new Path().move(points.cbNeck).line(points.cbHem).addClass('fabric')
|
||||||
|
|
||||||
|
store.set(
|
||||||
|
'gatherAreaStart',
|
||||||
|
Math.min(points.armhole.dy(points.cbWaist) / 10, paths.sideSeam.length() * 0.1)
|
||||||
|
)
|
||||||
|
store.set(
|
||||||
|
'gatherAreaLength',
|
||||||
|
Math.min(paths.sideSeam.length() * 0.8, points.armhole.dy(points.cbWaist) * 0.5)
|
||||||
|
)
|
||||||
|
|
||||||
|
const reverse = paths.sideSeam.reverse()
|
||||||
|
snippets.gatherAreaStart = new Snippet('notch', reverse.shiftAlong(store.get('gatherAreaStart')))
|
||||||
|
snippets.gatherAreaBack = new Snippet(
|
||||||
|
'notch',
|
||||||
|
reverse.shiftAlong(store.get('gatherAreaStart') + store.get('gatherAreaLength'))
|
||||||
|
)
|
||||||
|
|
||||||
|
if (sa) {
|
||||||
|
paths.sa = new Path()
|
||||||
|
.move(points.cbHem)
|
||||||
|
.join(paths.hem.offset(sa * 3))
|
||||||
|
.join(paths.sideSeam.offset(sa))
|
||||||
|
.join(paths.armhole.offset(sa))
|
||||||
|
.join(paths.shoulder.offset(sa))
|
||||||
|
.join(paths.backNeck.offset(sa))
|
||||||
|
.line(points.cbNeck)
|
||||||
|
.attr('class', 'fabric sa')
|
||||||
|
}
|
||||||
|
|
||||||
|
macro('cutonfold', {
|
||||||
|
from: points.cbNeck,
|
||||||
|
to: points.cbHem,
|
||||||
|
grainline: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
delete snippets.logo
|
||||||
|
|
||||||
|
points.title = points.cbHem.shift(45, 60)
|
||||||
|
|
||||||
|
macro('title', { at: points.title, nr: 2, title: 'back' })
|
||||||
|
|
||||||
|
if (complete && points.hem.y > points.waist.y)
|
||||||
|
paths.waist = new Path().move(points.cbWaist).line(points.waist).attr('class', 'help')
|
||||||
|
|
||||||
|
macro('pd', {
|
||||||
|
id: 'pArmhole',
|
||||||
|
path: paths.armhole.reverse(),
|
||||||
|
d: -1 * sa - 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('pd', {
|
||||||
|
id: 'pNeck',
|
||||||
|
path: paths.backNeck.reverse(),
|
||||||
|
d: -1 * sa - 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('pd', {
|
||||||
|
id: 'pShoulder',
|
||||||
|
path: paths.shoulder.reverse(),
|
||||||
|
d: -1 * sa - 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wAtHem',
|
||||||
|
from: points.cbHem,
|
||||||
|
to: points.hem,
|
||||||
|
y: points.cbHem.y + sa * 2.5 + 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hHemToNeck',
|
||||||
|
from: points.cbHem,
|
||||||
|
to: points.cbNeck,
|
||||||
|
x: points.cbHem.x - sa - 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hNeckToArmhole',
|
||||||
|
from: points.neck,
|
||||||
|
to: points.armhole,
|
||||||
|
x: points.armhole.x + sa + 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
plotSideLineMeasurements(points, paths.sideSeam, utils, macro)
|
||||||
|
|
||||||
|
return part
|
||||||
|
}
|
359
designs/bibi/src/front.mjs
Normal file
359
designs/bibi/src/front.mjs
Normal file
|
@ -0,0 +1,359 @@
|
||||||
|
import { base } from '@freesewing/brian'
|
||||||
|
import { back } from './back.mjs'
|
||||||
|
import {
|
||||||
|
adjustSidePoints,
|
||||||
|
calculateFba,
|
||||||
|
constructFrontHem,
|
||||||
|
constructFrontPoints,
|
||||||
|
correctArmHole,
|
||||||
|
createArmHoles,
|
||||||
|
plotSideLineMeasurements,
|
||||||
|
} from './shared.mjs'
|
||||||
|
|
||||||
|
export const front = {
|
||||||
|
name: 'bibi.front',
|
||||||
|
from: base,
|
||||||
|
measurements: [
|
||||||
|
'hips',
|
||||||
|
'waist',
|
||||||
|
'hpsToWaistBack',
|
||||||
|
'chest',
|
||||||
|
'hpsToWaistFront',
|
||||||
|
'seat',
|
||||||
|
'seatBack',
|
||||||
|
'waistToSeat',
|
||||||
|
'hpsToBust',
|
||||||
|
],
|
||||||
|
optionalMeasurements: ['bustSpan', 'highBust', 'waistToUnderbust', 'waistToKnee', 'waistToFloor'],
|
||||||
|
hide: { from: true },
|
||||||
|
plugins: [],
|
||||||
|
after: back,
|
||||||
|
options: {
|
||||||
|
dart: { bool: false, menu: 'fit' },
|
||||||
|
bustEase: {
|
||||||
|
pct: 0,
|
||||||
|
min: 0,
|
||||||
|
max: 10,
|
||||||
|
menu: (settings, mergedOptions) => (mergedOptions.draftForHighBust ? 'fit' : false),
|
||||||
|
order: 'EAA',
|
||||||
|
},
|
||||||
|
necklineDepth: { pct: 25, min: 20, max: 110, menu: 'style' },
|
||||||
|
necklineBend: { pct: 50, min: 0, max: 70, menu: 'style' },
|
||||||
|
armholeCurveFront: {
|
||||||
|
pct: 15,
|
||||||
|
min: -10,
|
||||||
|
max: 30,
|
||||||
|
menu: (settings, mergedOptions) => (mergedOptions.sleeves ? false : 'style.sleeves'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
draft: bibiFront,
|
||||||
|
}
|
||||||
|
|
||||||
|
function bibiFront({
|
||||||
|
store,
|
||||||
|
sa,
|
||||||
|
Point,
|
||||||
|
points,
|
||||||
|
Path,
|
||||||
|
paths,
|
||||||
|
Snippet,
|
||||||
|
snippets,
|
||||||
|
options,
|
||||||
|
measurements,
|
||||||
|
macro,
|
||||||
|
complete,
|
||||||
|
utils,
|
||||||
|
part,
|
||||||
|
}) {
|
||||||
|
// Hide Brian paths
|
||||||
|
for (const key of Object.keys(paths)) paths[key].hide()
|
||||||
|
|
||||||
|
// Re-use points for deeper armhole at the front
|
||||||
|
points.armholePitchCp1 = points.frontArmholePitchCp1
|
||||||
|
points.armholePitch = points.frontArmholePitch
|
||||||
|
points.armholePitchCp2 = points.frontArmholePitchCp2
|
||||||
|
|
||||||
|
// clean up some unnecessary/confusing points
|
||||||
|
delete points.frontArmholePitchCp1
|
||||||
|
delete points.frontArmholePitch
|
||||||
|
delete points.frontArmholePitchCp2
|
||||||
|
delete points.backArmholePitchCp1
|
||||||
|
delete points.backArmholePitch
|
||||||
|
delete points.backArmholePitchCp2
|
||||||
|
delete points.cbHem
|
||||||
|
delete points.cbNeck
|
||||||
|
|
||||||
|
constructFrontPoints(points, Point, measurements, options)
|
||||||
|
|
||||||
|
// FBA
|
||||||
|
points.originalChest = points.chest
|
||||||
|
points.originalArmhole = points.armhole
|
||||||
|
points.originalArmholeCp2 = points.armholeCp2
|
||||||
|
let fba
|
||||||
|
if (options.draftForHighBust && measurements.bustSpan && measurements.highBust) {
|
||||||
|
fba = calculateFba(
|
||||||
|
points.neck.shiftFractionTowards(points.shoulder, 0.5),
|
||||||
|
points.bust,
|
||||||
|
points.armholeHollow,
|
||||||
|
(measurements.bust * (1 + options.bustEase) - measurements.chest) / 2,
|
||||||
|
Point
|
||||||
|
)
|
||||||
|
points.bustOffset = fba.bustOffset
|
||||||
|
points.sideOffset0 = fba.sideOffset0
|
||||||
|
points.sideOffset1 = fba.sideOffset1
|
||||||
|
points.chest = fba.rotateLower(points.chest)
|
||||||
|
points.armhole = fba.rotateUpper(points.armhole)
|
||||||
|
points.armholeCp2 = fba.rotateUpper(points.armholeCp2)
|
||||||
|
points.armholeHollowCp1 = fba.rotateUpper(points.armholeHollowCp1)
|
||||||
|
points.armholeHollow = fba.rotateUpper(points.armholeHollow)
|
||||||
|
points.armholeHollowCp2 = fba.rotateUpper(points.armholeHollowCp2)
|
||||||
|
points.armholePitchCp1 = fba.rotateUpper(points.armholePitchCp1)
|
||||||
|
points.armholePitch = fba.rotateUpper(points.armholePitch)
|
||||||
|
points.armholePitchCp2 = fba.rotateUpper(points.armholePitchCp2)
|
||||||
|
points.shoulderCp1 = fba.rotateUpper(points.shoulderCp1)
|
||||||
|
points.shoulder = fba.rotateUpper(points.shoulder)
|
||||||
|
}
|
||||||
|
adjustSidePoints(points, options)
|
||||||
|
|
||||||
|
correctArmHole(points, paths, Path, options, utils)
|
||||||
|
|
||||||
|
const strapWidth = options.sleeves ? 0 : options.strapWidth
|
||||||
|
points.neck = points.hps.shiftFractionTowards(
|
||||||
|
points.shoulder,
|
||||||
|
options.necklineWidth * (1 - strapWidth)
|
||||||
|
)
|
||||||
|
|
||||||
|
points.cfNeck = new Point(
|
||||||
|
0,
|
||||||
|
points.neck.y + options.necklineDepth * points.neck.dy(points.cfBust)
|
||||||
|
)
|
||||||
|
points.cfNeckCp1 = points.cfNeck.shift(0, points.hps.x * options.necklineBend * 2)
|
||||||
|
points.neckCp2 = points.neck
|
||||||
|
.shiftTowards(points.shoulder, points.neck.dy(points.cfNeck) * (0.2 + options.necklineBend))
|
||||||
|
.rotate(-90, points.neck)
|
||||||
|
|
||||||
|
paths.frontNeck = new Path()
|
||||||
|
.move(points.neck)
|
||||||
|
.curve(points.neckCp2, points.cfNeckCp1, points.cfNeck)
|
||||||
|
.addClass('fabric')
|
||||||
|
constructFrontHem(points, measurements, options, Point, paths, Path)
|
||||||
|
|
||||||
|
store.set('frontSideSeamLength', paths.sideSeam.length())
|
||||||
|
const frontLength = store.get('frontSideSeamLength')
|
||||||
|
const backLength = store.get('backSideSeamLength') ?? 0
|
||||||
|
const dartLength = frontLength - backLength
|
||||||
|
const constructDart = (path, tip, dartLength) => {
|
||||||
|
const length = path.length()
|
||||||
|
|
||||||
|
dartLength = Math.max(0, Math.min(dartLength, length / 2))
|
||||||
|
|
||||||
|
const gatherArea = (store.get('gatherAreaLength') ?? 0) + dartLength
|
||||||
|
const offset = length - (store.get('gatherAreaStart') ?? 0) - gatherArea
|
||||||
|
|
||||||
|
const startSplit = path.shiftAlong(offset)
|
||||||
|
const startDartAlpha = path.shiftAlong(offset + (gatherArea - dartLength) * 0.5)
|
||||||
|
const endDartAlpha = path.shiftAlong(offset + (gatherArea + dartLength) * 0.5)
|
||||||
|
const endSplit = path.shiftAlong(offset + gatherArea)
|
||||||
|
|
||||||
|
let tmp = path.split(startSplit)
|
||||||
|
const pathBefore = tmp[0]
|
||||||
|
tmp = tmp[1].split(endSplit)
|
||||||
|
const pathGather = tmp[0]
|
||||||
|
const pathAfter = tmp[1]
|
||||||
|
const angleBefore = path.angleAt(startSplit)
|
||||||
|
const angleAfter = path.angleAt(endSplit)
|
||||||
|
const cpBefore = startSplit.shift(angleBefore, dartLength / 3)
|
||||||
|
const cpAfter = endSplit.shift(angleAfter, -dartLength / 3)
|
||||||
|
|
||||||
|
const dartDist = Math.max(tip.dist(startDartAlpha), tip.dist(endDartAlpha))
|
||||||
|
|
||||||
|
const startDart = tip.shiftTowards(startDartAlpha, dartDist)
|
||||||
|
const endDart = tip.shiftTowards(endDartAlpha, dartDist)
|
||||||
|
const dartMid = startDart.shiftFractionTowards(endDart, 0.5)
|
||||||
|
const tipShifted = tip.shiftFractionTowards(dartMid, 0.25)
|
||||||
|
const dartCpStart = tipShifted
|
||||||
|
.shiftFractionTowards(dartMid, 0.25)
|
||||||
|
.shiftFractionTowards(startDart, 0.25)
|
||||||
|
const dartCpEnd = tipShifted
|
||||||
|
.shiftFractionTowards(dartMid, 0.25)
|
||||||
|
.shiftFractionTowards(endDart, 0.25)
|
||||||
|
|
||||||
|
const dartAngleMain = startDart.angle(endDart)
|
||||||
|
const dartAngleBefore = startDartAlpha.angle(endDartAlpha)
|
||||||
|
const dartAngle = dartAngleBefore * 2 - dartAngleMain
|
||||||
|
let dartInnerAngle = tipShifted.angle(endDart) - tipShifted.angle(startDart)
|
||||||
|
if (dartInnerAngle < -180) dartInnerAngle += 360
|
||||||
|
const cpSplitStart = startDart.shift(dartAngle - dartInnerAngle / 2, -dartLength / 4)
|
||||||
|
const cpSplitEnd = endDart.shift(dartAngle + dartInnerAngle / 2, dartLength / 4)
|
||||||
|
|
||||||
|
return {
|
||||||
|
beforeDart: pathBefore.clone().curve(cpBefore, cpSplitStart, startDart),
|
||||||
|
dart: new Path().move(startDart)._curve(dartCpStart, tipShifted).curve_(dartCpEnd, endDart),
|
||||||
|
afterDart: new Path().move(endDart).curve(cpSplitEnd, cpAfter, endSplit).join(pathAfter),
|
||||||
|
dartMiddle: new Path().move(dartMid).line(tipShifted),
|
||||||
|
startGather: startSplit,
|
||||||
|
endGather: endSplit,
|
||||||
|
startDart: startDart,
|
||||||
|
endDart: endDart,
|
||||||
|
dartTip: tipShifted,
|
||||||
|
gatherArea: gatherArea,
|
||||||
|
gatherPath: pathGather,
|
||||||
|
dartLength: dartLength,
|
||||||
|
offset: offset,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const dart = constructDart(paths.sideSeam, points.bust, dartLength)
|
||||||
|
|
||||||
|
store.set('dart', dart)
|
||||||
|
|
||||||
|
points.startGather = dart.startGather
|
||||||
|
points.endGather = dart.endGather
|
||||||
|
points.startDart = dart.startDart
|
||||||
|
points.endDart = dart.endDart
|
||||||
|
points.dartTip = dart.dartTip
|
||||||
|
|
||||||
|
paths.sideSeamWithDart = paths.originalSideSeam = paths.sideSeam.clone().hide()
|
||||||
|
if (options.dart && dartLength > dart.gatherArea / 5) {
|
||||||
|
paths.sideSeam1 = dart.beforeDart.hide()
|
||||||
|
paths.dart = dart.dart.addClass('fabric')
|
||||||
|
paths.sideSeam2 = dart.afterDart.hide()
|
||||||
|
if (complete) {
|
||||||
|
paths.dartMiddle = dart.dartMiddle.addClass('help')
|
||||||
|
}
|
||||||
|
paths.sideSeam = paths.sideSeam1.clone().combine(paths.sideSeam2).addClass('fabric')
|
||||||
|
paths.sideSeamWithDart = paths.sideSeam1.clone().join(paths.dart).join(paths.sideSeam2).hide()
|
||||||
|
}
|
||||||
|
if (complete) {
|
||||||
|
snippets.startGather = new Snippet('notch', points.startGather)
|
||||||
|
snippets.endGather = new Snippet('notch', points.endGather)
|
||||||
|
if (dartLength > dart.gatherArea / 10 && !paths.dart) {
|
||||||
|
paths.gatherPath = new Path()
|
||||||
|
.move(points.startGather)
|
||||||
|
.join(dart.gatherPath.offset(-20))
|
||||||
|
.line(points.endGather)
|
||||||
|
.addClass('dashed various')
|
||||||
|
.addText('gather', 'center various help')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
createArmHoles(
|
||||||
|
options,
|
||||||
|
store,
|
||||||
|
points,
|
||||||
|
paths,
|
||||||
|
Path,
|
||||||
|
snippets,
|
||||||
|
Snippet,
|
||||||
|
strapWidth,
|
||||||
|
options.armholeCurveFront,
|
||||||
|
0,
|
||||||
|
utils
|
||||||
|
)
|
||||||
|
|
||||||
|
paths.centerLine = new Path().move(points.cfNeck).line(points.cfHem).addClass('fabric')
|
||||||
|
|
||||||
|
points.title = points.bust.shift(0, 5)
|
||||||
|
|
||||||
|
macro('title', { at: points.title, nr: 1, title: 'front' })
|
||||||
|
|
||||||
|
macro('cutonfold', {
|
||||||
|
from: points.cfNeck,
|
||||||
|
to: points.cfHem,
|
||||||
|
grainline: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
if (sa) {
|
||||||
|
if (paths.sideSeam1)
|
||||||
|
paths.sa = new Path()
|
||||||
|
.move(points.cfHem)
|
||||||
|
.join(paths.hem.offset(sa * 3))
|
||||||
|
.join(paths.sideSeam1.offset(sa))
|
||||||
|
.join(paths.sideSeam2.offset(sa))
|
||||||
|
.join(paths.armhole.offset(sa))
|
||||||
|
.join(paths.shoulder.offset(sa))
|
||||||
|
.join(paths.frontNeck.offset(sa))
|
||||||
|
.line(points.cfNeck)
|
||||||
|
.attr('class', 'fabric sa')
|
||||||
|
else
|
||||||
|
paths.sa = new Path()
|
||||||
|
.move(points.cfHem)
|
||||||
|
.join(paths.hem.offset(sa * 3))
|
||||||
|
.join(paths.sideSeam.offset(sa))
|
||||||
|
.join(paths.armhole.offset(sa))
|
||||||
|
.join(paths.shoulder.offset(sa))
|
||||||
|
.join(paths.frontNeck.offset(sa))
|
||||||
|
.line(points.cfNeck)
|
||||||
|
.attr('class', 'fabric sa')
|
||||||
|
}
|
||||||
|
|
||||||
|
// Waist line
|
||||||
|
if (complete && points.hem.y > points.waist.y)
|
||||||
|
paths.waist = new Path().move(points.cfWaist).line(points.waist).attr('class', 'help')
|
||||||
|
|
||||||
|
macro('pd', {
|
||||||
|
id: 'pArmhole',
|
||||||
|
path: paths.armhole.reverse(),
|
||||||
|
d: -1 * sa - 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('pd', {
|
||||||
|
id: 'pNeck',
|
||||||
|
path: paths.frontNeck.reverse(),
|
||||||
|
d: -1 * sa - 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('pd', {
|
||||||
|
id: 'pShoulder',
|
||||||
|
path: paths.shoulder.reverse(),
|
||||||
|
d: -1 * sa - 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wAtHem',
|
||||||
|
from: points.cfHem,
|
||||||
|
to: points.hem,
|
||||||
|
y: points.hem.y + sa * 2.5 + 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hHemToNeck',
|
||||||
|
from: points.cfHem,
|
||||||
|
to: points.cfNeck,
|
||||||
|
x: points.cfHem.x - sa - 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hNeckToArmhole',
|
||||||
|
from: points.neck,
|
||||||
|
to: points.armhole,
|
||||||
|
x: points.armhole.x + sa + 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
if (paths.dart) {
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hDart',
|
||||||
|
from: points.endDart,
|
||||||
|
to: points.startDart,
|
||||||
|
x: points.endDart.x + sa + 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
macro('ld', {
|
||||||
|
id: 'pDartStart',
|
||||||
|
from: points.dartTip,
|
||||||
|
to: points.startDart,
|
||||||
|
d: -sa - 15,
|
||||||
|
})
|
||||||
|
macro('ld', {
|
||||||
|
id: 'pDartEnd',
|
||||||
|
from: points.dartTip,
|
||||||
|
to: points.endDart,
|
||||||
|
d: sa + 15,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
snippets.bustPoint = new Snippet('notch', points.bust)
|
||||||
|
|
||||||
|
plotSideLineMeasurements(points, paths.sideSeamWithDart, utils, macro)
|
||||||
|
|
||||||
|
return part
|
||||||
|
}
|
49
designs/bibi/src/index.mjs
Normal file
49
designs/bibi/src/index.mjs
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
import { Design, mergeI18n } from '@freesewing/core'
|
||||||
|
import { data } from '../data.mjs'
|
||||||
|
import { i18n as brianI18n } from '@freesewing/brian'
|
||||||
|
import { i18n as bibiI18n } from '../i18n/index.mjs'
|
||||||
|
import { front } from './front.mjs'
|
||||||
|
import { back } from './back.mjs'
|
||||||
|
import { sleeve } from './sleeve.mjs'
|
||||||
|
import {
|
||||||
|
constructFrontPoints,
|
||||||
|
constructBackPoints,
|
||||||
|
calculateFba,
|
||||||
|
correctArmHole,
|
||||||
|
constructSideSeam,
|
||||||
|
adjustSidePoints,
|
||||||
|
constructBackHem,
|
||||||
|
constructFrontHem,
|
||||||
|
createArmHoles,
|
||||||
|
plotSideLineMeasurements,
|
||||||
|
} from './shared.mjs'
|
||||||
|
|
||||||
|
// Setup our new design
|
||||||
|
const Bibi = new Design({
|
||||||
|
data,
|
||||||
|
parts: [sleeve, back, front],
|
||||||
|
})
|
||||||
|
|
||||||
|
// Merge translations
|
||||||
|
const i18n = mergeI18n([brianI18n, bibiI18n], {
|
||||||
|
o: { drop: ['sleeveLengthBonus'] },
|
||||||
|
})
|
||||||
|
|
||||||
|
// Named exports
|
||||||
|
export {
|
||||||
|
front,
|
||||||
|
back,
|
||||||
|
sleeve,
|
||||||
|
constructFrontPoints,
|
||||||
|
constructBackPoints,
|
||||||
|
calculateFba,
|
||||||
|
correctArmHole,
|
||||||
|
constructSideSeam,
|
||||||
|
adjustSidePoints,
|
||||||
|
constructBackHem,
|
||||||
|
constructFrontHem,
|
||||||
|
createArmHoles,
|
||||||
|
plotSideLineMeasurements,
|
||||||
|
Bibi,
|
||||||
|
i18n,
|
||||||
|
}
|
485
designs/bibi/src/shared.mjs
Normal file
485
designs/bibi/src/shared.mjs
Normal file
|
@ -0,0 +1,485 @@
|
||||||
|
function createLowerPoints(points, measurements, options, prefix) {
|
||||||
|
// These lengths are typically not critical, so use a rough estimate if not given
|
||||||
|
// We don't want the user to need these measurements, as this design can also be used for shorter tops
|
||||||
|
if (typeof measurements.waistToKnee !== 'undefined') {
|
||||||
|
points[prefix + 'Knee'] = points[prefix + 'Waist'].translate(0, measurements.waistToKnee)
|
||||||
|
} else {
|
||||||
|
points[prefix + 'Knee'] = points[prefix + 'Waist'].translate(
|
||||||
|
0,
|
||||||
|
measurements.hpsToWaistBack * 1.5
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if (typeof measurements.waistToFloor !== 'undefined') {
|
||||||
|
points[prefix + 'Floor'] = points[prefix + 'Waist'].translate(0, measurements.waistToFloor)
|
||||||
|
} else {
|
||||||
|
points[prefix + 'Floor'] = points[prefix + 'Waist'].translate(
|
||||||
|
0,
|
||||||
|
measurements.hpsToWaistBack * 2.5
|
||||||
|
)
|
||||||
|
}
|
||||||
|
points.sideTarget = points[prefix + 'Knee'].translate(points.seatBase.x * (1 + options.flare), 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function constructFrontPoints(points, Point, measurements, options) {
|
||||||
|
points.cfBust = new Point(0, measurements.hpsToBust)
|
||||||
|
if (measurements.bustSpan) {
|
||||||
|
points.bust = new Point(measurements.bustSpan / 2, measurements.hpsToBust)
|
||||||
|
} else {
|
||||||
|
// Very rough estimate, but only used for potential dart construction
|
||||||
|
points.bust = new Point(measurements.chest / 8, measurements.hpsToBust)
|
||||||
|
}
|
||||||
|
points.chest = new Point(
|
||||||
|
(measurements.chest * (1 + options.chestEase)) / 4,
|
||||||
|
measurements.hpsToBust
|
||||||
|
)
|
||||||
|
points.cbWaist = new Point(0, measurements.hpsToWaistBack)
|
||||||
|
points.cfWaist = new Point(0, Math.max(measurements.hpsToWaistBack, measurements.hpsToWaistFront))
|
||||||
|
points.waist = new Point((measurements.waist * (1 + options.waistEase)) / 4, points.cfWaist.y)
|
||||||
|
points.cfArmhole = new Point(
|
||||||
|
0,
|
||||||
|
points.cbWaist.y -
|
||||||
|
measurements.waistToArmpit * (1 - options.armholeDepth - options.bicepsEase / 2)
|
||||||
|
)
|
||||||
|
points.armhole = new Point(points.armhole.x, points.cfArmhole.y)
|
||||||
|
points.armholeCp2 = points.armhole.shift(180, points._tmp1.dx(points.armhole) / 4)
|
||||||
|
|
||||||
|
points.cfUnderbust = new Point(
|
||||||
|
0,
|
||||||
|
points.cfWaist.y - (measurements.waistToUnderbust ?? measurements.hpsToWaistBack / 6)
|
||||||
|
)
|
||||||
|
points.underbust = new Point(
|
||||||
|
(measurements.chest * (1 + options.chestEase)) / 4,
|
||||||
|
points.cfUnderbust.y
|
||||||
|
)
|
||||||
|
points.cfHips = new Point(0, points.cfWaist.y + measurements.waistToHips)
|
||||||
|
points.hips = new Point((measurements.hips * (1 + options.hipsEase)) / 4, points.cfHips.y)
|
||||||
|
|
||||||
|
const seatFront = measurements.seat - measurements.seatBack
|
||||||
|
const seatExtra = (measurements.seatBack - seatFront) / 4
|
||||||
|
points.cfSeat = new Point(0, points.cfWaist.y + measurements.waistToSeat)
|
||||||
|
points.seatBase = new Point((measurements.seat * (1 + options.seatEase)) / 4, points.cfSeat.y)
|
||||||
|
points.seat = seatAdjustment(points.seatBase, points.hips, -seatExtra)
|
||||||
|
// points.cfSeat = points.cfSeat.shift(-90, -seatExtra * 2)
|
||||||
|
|
||||||
|
createLowerPoints(points, measurements, options, 'cf')
|
||||||
|
}
|
||||||
|
|
||||||
|
export function constructBackPoints(points, Point, measurements, options) {
|
||||||
|
points.chest = new Point(
|
||||||
|
(measurements.chest * (1 + options.chestEase)) / 4,
|
||||||
|
measurements.hpsToBust
|
||||||
|
)
|
||||||
|
points.cbWaist = new Point(0, measurements.hpsToWaistBack)
|
||||||
|
points.waist = new Point((measurements.waist * (1 + options.waistEase)) / 4, points.cbWaist.y)
|
||||||
|
points.cbUnderbust = new Point(
|
||||||
|
0,
|
||||||
|
points.cbWaist.y - (measurements.waistToUnderbust ?? measurements.hpsToWaistBack / 6)
|
||||||
|
)
|
||||||
|
points.underbust = new Point(
|
||||||
|
(measurements.chest * (1 + options.chestEase)) / 4,
|
||||||
|
points.cbUnderbust.y
|
||||||
|
)
|
||||||
|
points.cbHips = new Point(0, points.cbWaist.y + measurements.waistToHips)
|
||||||
|
points.hips = new Point((measurements.hips * (1 + options.hipsEase)) / 4, points.cbHips.y)
|
||||||
|
|
||||||
|
points.cbSeat = new Point(0, points.cbWaist.y + measurements.waistToSeat)
|
||||||
|
const seatFront = measurements.seat - measurements.seatBack
|
||||||
|
const seatExtra = (measurements.seatBack - seatFront) / 4
|
||||||
|
points.seatBase = new Point((measurements.seat * (1 + options.seatEase)) / 4, points.cbSeat.y)
|
||||||
|
points.seat = seatAdjustment(points.seatBase, points.hips, seatExtra)
|
||||||
|
// points.cbSeat = points.cbSeat.shift(-90, seatExtra * 2)
|
||||||
|
|
||||||
|
createLowerPoints(points, measurements, options, 'cb')
|
||||||
|
}
|
||||||
|
|
||||||
|
function seatAdjustment(seatBase, anchor, seatExtra) {
|
||||||
|
const r = anchor.dist(seatBase)
|
||||||
|
return seatBase.rotate((seatExtra / r) * 90, anchor)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function calculateFba(anchor, bust, side, dx, Point) {
|
||||||
|
const r = anchor.dist(bust)
|
||||||
|
|
||||||
|
const a0 = Math.asin((bust.x - anchor.x) / r)
|
||||||
|
let a1 = Math.asin((bust.x - anchor.x + dx) / r)
|
||||||
|
|
||||||
|
if (isNaN(a1)) {
|
||||||
|
a1 = Math.PI / 2
|
||||||
|
}
|
||||||
|
|
||||||
|
const bustOffset = new Point(anchor.x + r * Math.sin(a1), anchor.y + r * Math.cos(a1))
|
||||||
|
|
||||||
|
const dy = bustOffset.y - bust.y
|
||||||
|
|
||||||
|
const b = a1 - a0
|
||||||
|
|
||||||
|
const rotateUpper = (point) => point.rotate((b / Math.PI) * 180, anchor)
|
||||||
|
|
||||||
|
const sideOffset0 = rotateUpper(side)
|
||||||
|
const sideOffset1 = side.translate(dx, dy)
|
||||||
|
|
||||||
|
const c = sideOffset1.angle(bust) - sideOffset0.angle(bust)
|
||||||
|
|
||||||
|
const rotateLower = (point) => point.translate(dx, dy).rotate(-c, bust)
|
||||||
|
|
||||||
|
return {
|
||||||
|
dx: dx,
|
||||||
|
dy: dy,
|
||||||
|
rotateUpper: rotateUpper,
|
||||||
|
rotateLower: rotateLower,
|
||||||
|
bustOffset: bustOffset,
|
||||||
|
sideOffset0: sideOffset0,
|
||||||
|
sideOffset1: sideOffset1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function correctArmHole(points, paths, Path, options, utils) {
|
||||||
|
points.armholeCp1 = points.chest
|
||||||
|
|
||||||
|
if (!options.sleeves && points.armhole.y > points.chest.y) {
|
||||||
|
points.armhole = utils.beamIntersectsY(points.chest, points.waist, points.armhole.y)
|
||||||
|
points.armholeCp2 = points.armhole.shift(180, points._tmp1.dx(points.armhole) / 4)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (points.armhole.y > points.armholeCp1.y * 0.8) {
|
||||||
|
const frac = Math.min(
|
||||||
|
1,
|
||||||
|
(points.armhole.y - points.armholeCp1.y * 0.8) / (0.2 * points.armholeCp1.y)
|
||||||
|
)
|
||||||
|
points.armholeCp1 = points.chest.shiftFractionTowards(
|
||||||
|
points.armholeCp2.rotate(90, points.armhole),
|
||||||
|
frac
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function extendSideLine(points, intersectionY) {
|
||||||
|
const fraction = (intersectionY - points.seat.y) / points.seat.dy(points.sideTarget)
|
||||||
|
return points.seat.shiftFractionTowards(points.sideTarget, fraction)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function constructSideSeam(Path, Point, points, height, bottomSmoothness) {
|
||||||
|
const base = new Path()
|
||||||
|
.move(points.armhole)
|
||||||
|
.curve(points.armholeCp1, points.waistCp2, points.waist)
|
||||||
|
.smurve(points.hipsCp2, points.hips)
|
||||||
|
.smurve(points.seatCp2, points.seat)
|
||||||
|
const intersectionY = Math.min(height, points.seat.y) - bottomSmoothness
|
||||||
|
let bottom = base.intersectsY(height)[0]
|
||||||
|
if (!bottom) {
|
||||||
|
// below seat
|
||||||
|
bottom = extendSideLine(points, height)
|
||||||
|
}
|
||||||
|
points.hem = bottom
|
||||||
|
let intersection = base.intersectsY(intersectionY)[0]
|
||||||
|
|
||||||
|
if (!intersection) {
|
||||||
|
if (intersectionY >= points.seat.y) {
|
||||||
|
// below seat
|
||||||
|
intersection = extendSideLine(points, intersectionY)
|
||||||
|
} else {
|
||||||
|
//above armhole
|
||||||
|
intersection = points.armhole
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bottom.x = (bottom.x + intersection.x) / 2 // creates a smoother bottom as the bottom is vertical
|
||||||
|
|
||||||
|
points.intersection = intersection
|
||||||
|
|
||||||
|
const angle = base.angleAt(intersection)
|
||||||
|
if (!angle) {
|
||||||
|
return base
|
||||||
|
}
|
||||||
|
const intersectionCp1 = intersection.shift(angle, bottomSmoothness * 0.3)
|
||||||
|
const intersectionCp2 = new Point(bottom.x, bottom.y - bottomSmoothness * 0.3)
|
||||||
|
|
||||||
|
points.intersectionCp1 = intersectionCp1
|
||||||
|
points.intersectionCp2 = intersectionCp2
|
||||||
|
|
||||||
|
let result = base.split(intersection)[0]
|
||||||
|
if (!result.curve) {
|
||||||
|
result = new Path().move(points.armhole)
|
||||||
|
}
|
||||||
|
return result.curve(intersectionCp1, intersectionCp2, bottom).reverse()
|
||||||
|
}
|
||||||
|
|
||||||
|
export function adjustSidePoints(points, options) {
|
||||||
|
// Remove waist fitting if option is disabled
|
||||||
|
if (!options.fitWaist || points.waist.x > points.armhole.x) {
|
||||||
|
if (points.waist.x < points.armhole.x) {
|
||||||
|
points.waist.x = points.armhole.x
|
||||||
|
}
|
||||||
|
points.waistCp2 = points.waist.shiftFractionTowards(points.armhole, 0.2)
|
||||||
|
if (points.hips.x < points.waist.x) {
|
||||||
|
points.hips.x = points.waist.x
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// prevent barrel shape
|
||||||
|
if (points.hips.x < points.waist.x) {
|
||||||
|
points.hips.x = points.waist.x
|
||||||
|
}
|
||||||
|
// prevent excessive hips narrowing
|
||||||
|
if (points.hips.x < (points.waist.x + points.seat.x) / 2) {
|
||||||
|
points.hips.x = (points.waist.x + points.seat.x) / 2
|
||||||
|
}
|
||||||
|
// prevent smaller seat than hips
|
||||||
|
if (points.seat.x < points.hips.x) {
|
||||||
|
points.seat.x = points.hips.x
|
||||||
|
}
|
||||||
|
// prevent excessive waist narrowing
|
||||||
|
if (points.waist.x < 2 * points.hips.x - points.seat.x) {
|
||||||
|
points.waist.x = 2 * points.hips.x - points.seat.x
|
||||||
|
}
|
||||||
|
|
||||||
|
// curve points
|
||||||
|
points.waistCp2 = points.waist.shift(90, points.armhole.dy(points.waist) * 0.2)
|
||||||
|
points.seatCp2 = points.seat.shift(90, points.hips.dy(points.seat) * 0.3)
|
||||||
|
points.hipsCp2 = points.waist.shiftFractionTowards(points.hips, 0.6)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBottomSmoothness(bottom, points) {
|
||||||
|
return (Math.min(bottom, points.seat.y) - points.armhole.y) * 0.3
|
||||||
|
}
|
||||||
|
|
||||||
|
export function constructBackHem(points, measurements, options, Point, paths, Path) {
|
||||||
|
let centerPoint
|
||||||
|
|
||||||
|
// Extra length for butt
|
||||||
|
let extraBackLength = 0
|
||||||
|
let bonusLengthMeasurement = measurements.hpsToWaistBack
|
||||||
|
switch (options.length) {
|
||||||
|
case 'underbust':
|
||||||
|
centerPoint = points.cbUnderbust
|
||||||
|
bonusLengthMeasurement = measurements.waistToUnderbust
|
||||||
|
break
|
||||||
|
case 'waist':
|
||||||
|
centerPoint = points.cbWaist
|
||||||
|
break
|
||||||
|
case 'hips':
|
||||||
|
centerPoint = points.cbHips
|
||||||
|
break
|
||||||
|
case 'seat':
|
||||||
|
centerPoint = points.cbSeat
|
||||||
|
extraBackLength = (measurements.seatBack - measurements.seat / 2) / 2
|
||||||
|
bonusLengthMeasurement *= 2
|
||||||
|
break
|
||||||
|
case 'knee':
|
||||||
|
centerPoint = points.cbKnee
|
||||||
|
extraBackLength = (measurements.seatBack - measurements.seat / 2) / 2
|
||||||
|
bonusLengthMeasurement *= 3
|
||||||
|
break
|
||||||
|
case 'floor':
|
||||||
|
centerPoint = points.cbFloor
|
||||||
|
extraBackLength = (measurements.seatBack - measurements.seat / 2) / 2
|
||||||
|
bonusLengthMeasurement *= 3
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!centerPoint) {
|
||||||
|
centerPoint = points.cbSeat
|
||||||
|
}
|
||||||
|
|
||||||
|
const hemBottom = centerPoint.y + bonusLengthMeasurement * options.lengthBonus
|
||||||
|
points.cbHem = new Point(
|
||||||
|
0,
|
||||||
|
centerPoint.y + bonusLengthMeasurement * options.lengthBonus + extraBackLength
|
||||||
|
)
|
||||||
|
points.midHem = new Point(points.hem.x * 0.66, points.cbHem.y)
|
||||||
|
paths.sideSeam = constructSideSeam(
|
||||||
|
Path,
|
||||||
|
Point,
|
||||||
|
points,
|
||||||
|
hemBottom,
|
||||||
|
getBottomSmoothness(hemBottom, points)
|
||||||
|
).addClass('fabric')
|
||||||
|
|
||||||
|
paths.hem = new Path()
|
||||||
|
.move(points.cbHem)
|
||||||
|
.curve(points.midHem, points.midHem, points.hem)
|
||||||
|
.addClass('fabric')
|
||||||
|
}
|
||||||
|
|
||||||
|
export function constructFrontHem(points, measurements, options, Point, paths, Path) {
|
||||||
|
let centerPoint
|
||||||
|
let bonusLengthMeasurement = measurements.hpsToWaistBack
|
||||||
|
switch (options.length) {
|
||||||
|
case 'underbust':
|
||||||
|
centerPoint = points.cfUnderbust
|
||||||
|
bonusLengthMeasurement = measurements.waistToUnderbust
|
||||||
|
break
|
||||||
|
case 'waist':
|
||||||
|
centerPoint = points.cfWaist
|
||||||
|
break
|
||||||
|
case 'hips':
|
||||||
|
centerPoint = points.cfHips
|
||||||
|
break
|
||||||
|
case 'seat':
|
||||||
|
centerPoint = points.cfSeat
|
||||||
|
bonusLengthMeasurement *= 2
|
||||||
|
break
|
||||||
|
case 'knee':
|
||||||
|
centerPoint = points.cfKnee
|
||||||
|
bonusLengthMeasurement *= 3
|
||||||
|
break
|
||||||
|
case 'floor':
|
||||||
|
centerPoint = points.cfFloor
|
||||||
|
bonusLengthMeasurement *= 3
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!centerPoint) {
|
||||||
|
centerPoint = points.cfSeat
|
||||||
|
}
|
||||||
|
|
||||||
|
const hemBottom = centerPoint.y + bonusLengthMeasurement * options.lengthBonus
|
||||||
|
points.cfHem = new Point(0, centerPoint.y + bonusLengthMeasurement * options.lengthBonus)
|
||||||
|
points.midHem = new Point(points.hem.x * 0.66, points.cfHem.y)
|
||||||
|
paths.sideSeam = constructSideSeam(
|
||||||
|
Path,
|
||||||
|
Point,
|
||||||
|
points,
|
||||||
|
hemBottom,
|
||||||
|
getBottomSmoothness(hemBottom, points)
|
||||||
|
).addClass('fabric')
|
||||||
|
|
||||||
|
paths.hem = new Path()
|
||||||
|
.move(points.cfHem)
|
||||||
|
.curve(points.midHem, points.midHem, points.hem)
|
||||||
|
.addClass('fabric')
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createArmHoles(
|
||||||
|
options,
|
||||||
|
store,
|
||||||
|
points,
|
||||||
|
paths,
|
||||||
|
Path,
|
||||||
|
snippets,
|
||||||
|
Snippet,
|
||||||
|
strapWidth,
|
||||||
|
armholeCurve,
|
||||||
|
armholeDrop,
|
||||||
|
utils,
|
||||||
|
notchType = 'notch'
|
||||||
|
) {
|
||||||
|
if (options.sleeves) {
|
||||||
|
if (store.get('capSleeves')) {
|
||||||
|
const sleeveCapFactor = (options.sleeveLength + 0.2) * 4
|
||||||
|
const capLength = sleeveCapFactor * store.get('sleeveCapHeight')
|
||||||
|
points.sleeveCap = points.shoulder.shift(
|
||||||
|
points.neck.angle(points.shoulder) - 15 + options.cuffEase * 15,
|
||||||
|
capLength
|
||||||
|
)
|
||||||
|
points.sleeveCapStart = points.shoulder.shift(
|
||||||
|
points.neck.angle(points.shoulder),
|
||||||
|
capLength * -0.2
|
||||||
|
)
|
||||||
|
points.sleeveCapCp = points.sleeveCap
|
||||||
|
.shiftTowards(points.armholePitchCp1, capLength * 0.2)
|
||||||
|
.rotate(-90, points.sleeveCap)
|
||||||
|
paths.shoulder = new Path()
|
||||||
|
.move(points.sleeveCap)
|
||||||
|
.curve(points.sleeveCapCp, points.shoulder, points.sleeveCapStart)
|
||||||
|
.line(points.neck)
|
||||||
|
.addClass('fabric')
|
||||||
|
paths.armhole = new Path()
|
||||||
|
.move(points.armhole)
|
||||||
|
.curve(points.armholeCp2, points.armholeHollowCp1, points.armholeHollow)
|
||||||
|
.curve(points.armholeHollowCp2, points.armholePitchCp1, points.sleeveCap)
|
||||||
|
.addClass('fabric')
|
||||||
|
} else {
|
||||||
|
paths.shoulder = new Path().move(points.shoulder).line(points.neck).addClass('fabric')
|
||||||
|
paths.armhole = new Path()
|
||||||
|
.move(points.armhole)
|
||||||
|
.curve(points.armholeCp2, points.armholeHollowCp1, points.armholeHollow)
|
||||||
|
.curve(points.armholeHollowCp2, points.armholePitchCp1, points.armholePitch)
|
||||||
|
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
|
||||||
|
.addClass('fabric')
|
||||||
|
snippets.armholePitchNotch = new Snippet(notchType, points.armholePitch)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
points.strapTop = points.neck.shift(
|
||||||
|
points.shoulder.angle(points.hps),
|
||||||
|
-strapWidth * points.shoulder.dist(points.hps)
|
||||||
|
)
|
||||||
|
points.strapTopCp1 = points.strapTop
|
||||||
|
.shiftTowards(points.hps, 0.2 * points.strapTop.dy(points.armhole))
|
||||||
|
.rotate(90, points.strapTop)
|
||||||
|
|
||||||
|
// Increase weight of armhole control points because we don't use armholeHollow here anymore
|
||||||
|
points.armholeCp2 = points.armhole.shiftFractionTowards(points.armholeCp2, 3)
|
||||||
|
|
||||||
|
points.armholeIntersection = utils.beamsIntersect(
|
||||||
|
points.strapTop,
|
||||||
|
points.strapTopCp1,
|
||||||
|
points.armhole,
|
||||||
|
points.armholeCp2
|
||||||
|
)
|
||||||
|
points.armholeIntersectionDrop = points.armholeIntersection.shiftFractionTowards(
|
||||||
|
points.strapTop,
|
||||||
|
-armholeDrop
|
||||||
|
)
|
||||||
|
|
||||||
|
points.armholeCp2 = points.armholeCp2.shiftFractionTowards(
|
||||||
|
points.armholeIntersection,
|
||||||
|
armholeCurve
|
||||||
|
)
|
||||||
|
points.strapTopCp1 = points.strapTopCp1.shiftFractionTowards(
|
||||||
|
points.armholeIntersectionDrop,
|
||||||
|
armholeCurve
|
||||||
|
)
|
||||||
|
|
||||||
|
paths.armhole = new Path()
|
||||||
|
.move(points.armhole)
|
||||||
|
.curve(points.armholeCp2, points.strapTopCp1, points.strapTop)
|
||||||
|
.addClass('fabric')
|
||||||
|
paths.shoulder = new Path().move(points.strapTop).line(points.neck).addClass('fabric')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function plotSideLineMeasurements(points, sideSeam, utils, macro) {
|
||||||
|
const offsets = {
|
||||||
|
seat: points.seat.y,
|
||||||
|
hips: points.hips.y,
|
||||||
|
waist: points.waist.y,
|
||||||
|
underbust: points.underbust.y,
|
||||||
|
dart: points.dartTip?.y,
|
||||||
|
armhole: points.armhole.y + 0.01,
|
||||||
|
}
|
||||||
|
let prevY = (points.cfHem ?? points.cbHem).y
|
||||||
|
const strings = Object.keys(offsets)
|
||||||
|
for (let i = 0; i < strings.length; i++) {
|
||||||
|
const key = strings[i]
|
||||||
|
let y = offsets[key]
|
||||||
|
if (!y || y > points.hem.y) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
let intersects = sideSeam.intersectsY(y)
|
||||||
|
if (intersects.length === 0) {
|
||||||
|
// Intersecting the path exactly on the corner points sometimes doesn't work
|
||||||
|
// See issue #3367
|
||||||
|
y += 0.001
|
||||||
|
intersects = sideSeam.intersectsY(y)
|
||||||
|
}
|
||||||
|
if (intersects.length > 0) {
|
||||||
|
const sidePoint = intersects[0]
|
||||||
|
const centerPoint = sidePoint.clone()
|
||||||
|
centerPoint.x = 0
|
||||||
|
const prevPoint = centerPoint.clone()
|
||||||
|
prevPoint.y = prevY
|
||||||
|
prevY = y
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wAt' + utils.capitalize(key),
|
||||||
|
from: centerPoint,
|
||||||
|
to: sidePoint,
|
||||||
|
y: y,
|
||||||
|
})
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hBelow' + utils.capitalize(key),
|
||||||
|
from: centerPoint,
|
||||||
|
to: prevPoint,
|
||||||
|
x: 30,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
146
designs/bibi/src/sleeve.mjs
Normal file
146
designs/bibi/src/sleeve.mjs
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
import { sleevecap as brianSleeveCap } from '@freesewing/brian'
|
||||||
|
import { hidePresets } from '@freesewing/core'
|
||||||
|
|
||||||
|
export const sleeve = {
|
||||||
|
name: 'bibi.sleeve',
|
||||||
|
from: brianSleeveCap,
|
||||||
|
hide: hidePresets.HIDE_TREE,
|
||||||
|
options: {
|
||||||
|
sleeveLength: {
|
||||||
|
pct: 20,
|
||||||
|
min: -20,
|
||||||
|
max: 110,
|
||||||
|
menu: (settings, mergedOptions) =>
|
||||||
|
mergedOptions.sleeves === false ? false : 'style.sleeves',
|
||||||
|
},
|
||||||
|
cuffEase: {
|
||||||
|
pct: 20,
|
||||||
|
min: 0,
|
||||||
|
max: 200,
|
||||||
|
menu: (settings, mergedOptions) =>
|
||||||
|
mergedOptions.sleeves === false ? false : 'style.sleeves',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
measurements: ['shoulderToWrist', 'wrist'],
|
||||||
|
draft: bibiSleeve,
|
||||||
|
}
|
||||||
|
|
||||||
|
function bibiSleeve({
|
||||||
|
options,
|
||||||
|
store,
|
||||||
|
measurements,
|
||||||
|
points,
|
||||||
|
paths,
|
||||||
|
Point,
|
||||||
|
Path,
|
||||||
|
sa,
|
||||||
|
macro,
|
||||||
|
snippets,
|
||||||
|
Snippet,
|
||||||
|
part,
|
||||||
|
}) {
|
||||||
|
points.sleeveTip = paths.sleevecap.edge('top')
|
||||||
|
points.sleeveTop = new Point(0, points.sleeveTip.y) // Always in center
|
||||||
|
|
||||||
|
// Determine the sleeve length
|
||||||
|
store.set('sleeveLength', measurements.shoulderToWrist * options.sleeveLength)
|
||||||
|
|
||||||
|
store.set('capSleeves', options.sleeveLength < 0.05)
|
||||||
|
|
||||||
|
store.set('sleeveCapHeight', -points.sleeveTop.y)
|
||||||
|
if (store.get('capSleeves')) {
|
||||||
|
return part.hide()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!options.sleeves) {
|
||||||
|
store.set('sleeveLength', 0)
|
||||||
|
return part.hide()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wrist
|
||||||
|
points.centerWrist = points.sleeveTop.shift(-90, measurements.shoulderToWrist)
|
||||||
|
points.wristRight = points.centerWrist.shift(0, (measurements.wrist * (1 + options.cuffEase)) / 2)
|
||||||
|
points.wristLeft = points.wristRight.rotate(180, points.centerWrist)
|
||||||
|
|
||||||
|
points.cuffRight = points.bicepsRight.shiftFractionTowards(
|
||||||
|
points.wristRight,
|
||||||
|
options.sleeveLength
|
||||||
|
)
|
||||||
|
points.cuffLeft = points.bicepsLeft.shiftFractionTowards(points.wristLeft, options.sleeveLength)
|
||||||
|
points.centerCuff = points.cuffRight.shiftFractionTowards(points.cuffLeft, 0.5)
|
||||||
|
|
||||||
|
// Paths
|
||||||
|
paths.sleevecap.hide()
|
||||||
|
paths.seam = new Path()
|
||||||
|
.move(points.bicepsLeft)
|
||||||
|
.move(points.cuffLeft)
|
||||||
|
.move(points.cuffRight)
|
||||||
|
.line(points.bicepsRight)
|
||||||
|
.join(paths.sleevecap)
|
||||||
|
.close()
|
||||||
|
.attr('class', 'fabric')
|
||||||
|
|
||||||
|
if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Annotations
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Anchor point for sampling
|
||||||
|
points.gridAnchor = new Point(0, 0)
|
||||||
|
|
||||||
|
// Grainline
|
||||||
|
macro('grainline', {
|
||||||
|
from: points.centerCuff,
|
||||||
|
to: points.centerBiceps,
|
||||||
|
})
|
||||||
|
|
||||||
|
// Cut list
|
||||||
|
store.cutlist.addCut({ cut: 2, from: 'fabric' })
|
||||||
|
|
||||||
|
// Logo
|
||||||
|
points.logo = points.centerBiceps.shiftFractionTowards(points.centerCuff, 0.3)
|
||||||
|
snippets.logo = new Snippet('logo', points.logo)
|
||||||
|
|
||||||
|
// Title
|
||||||
|
macro('title', { at: points.centerBiceps, nr: 3, title: 'sleeve' })
|
||||||
|
|
||||||
|
// Notches
|
||||||
|
points.frontNotch = paths.sleevecap.shiftAlong(store.get('frontArmholeToArmholePitch'))
|
||||||
|
points.backNotch = paths.sleevecap.reverse().shiftAlong(store.get('backArmholeToArmholePitch'))
|
||||||
|
snippets.frontNotch = new Snippet('notch', points.frontNotch)
|
||||||
|
snippets.backNotch = new Snippet('bnotch', points.backNotch)
|
||||||
|
|
||||||
|
// Dimensions
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hCuffToArmhole',
|
||||||
|
from: points.cuffLeft,
|
||||||
|
to: points.bicepsLeft,
|
||||||
|
x: points.bicepsLeft.x - sa - 15,
|
||||||
|
})
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hFull',
|
||||||
|
from: points.cuffLeft,
|
||||||
|
to: points.sleeveTip,
|
||||||
|
x: points.bicepsLeft.x - sa - 30,
|
||||||
|
})
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wFull',
|
||||||
|
from: points.bicepsLeft,
|
||||||
|
to: points.bicepsRight,
|
||||||
|
y: points.sleeveTip.y - sa - 30,
|
||||||
|
})
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wCuff',
|
||||||
|
from: points.cuffLeft,
|
||||||
|
to: points.cuffRight,
|
||||||
|
y: points.cuffLeft.y + sa + 30,
|
||||||
|
})
|
||||||
|
macro('pd', {
|
||||||
|
id: 'lSleevevap',
|
||||||
|
path: paths.sleevecap.reverse(),
|
||||||
|
d: -1 * sa - 15,
|
||||||
|
})
|
||||||
|
|
||||||
|
return part
|
||||||
|
}
|
20
designs/bibi/tests/shared.test.mjs
Normal file
20
designs/bibi/tests/shared.test.mjs
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
// This file is auto-generated | Any changes you make will be overwritten.
|
||||||
|
import { Bibi, i18n } from '../src/index.mjs'
|
||||||
|
|
||||||
|
// Shared tests
|
||||||
|
import { testPatternConfig } from '../../../tests/designs/config.mjs'
|
||||||
|
import { testPatternI18n } from '../../../tests/designs/i18n.mjs'
|
||||||
|
import { testPatternDrafting } from '../../../tests/designs/drafting.mjs'
|
||||||
|
import { testPatternSampling } from '../../../tests/designs/sampling.mjs'
|
||||||
|
|
||||||
|
// Test config
|
||||||
|
testPatternConfig(Bibi)
|
||||||
|
|
||||||
|
// Test translation
|
||||||
|
testPatternI18n(Bibi, i18n)
|
||||||
|
|
||||||
|
// Test drafting - Change the second parameter to `true` to log errors
|
||||||
|
testPatternDrafting(Bibi, false)
|
||||||
|
|
||||||
|
// Test sampling - Change the second parameter to `true` to log errors
|
||||||
|
testPatternSampling(Bibi, false)
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -98,8 +98,8 @@ export const base = {
|
||||||
panels: { list: ['11', '13'], dflt: '13', menu: 'fit' },
|
panels: { list: ['11', '13'], dflt: '13', menu: 'fit' },
|
||||||
backOpening: { pct: 4, min: 3, max: 10, menu: 'style' },
|
backOpening: { pct: 4, min: 3, max: 10, menu: 'style' },
|
||||||
backRise: { pct: 15, min: 1, max: 25, menu: 'style' },
|
backRise: { pct: 15, min: 1, max: 25, menu: 'style' },
|
||||||
backDrop: { pct: 2, min: 0, max: 5, menu: 'style' },
|
backDrop: { pct: 2, min: -10, max: 5, menu: 'style' },
|
||||||
frontRise: { pct: 4, min: 0.1, max: 8, menu: 'style' },
|
frontRise: { pct: 4, min: -10, max: 8, menu: 'style' },
|
||||||
frontDrop: { pct: 5, min: 0, max: 10, menu: 'style' },
|
frontDrop: { pct: 5, min: 0, max: 10, menu: 'style' },
|
||||||
hipRise: { pct: 5, min: 0, max: 15, menu: 'style' },
|
hipRise: { pct: 5, min: 0, max: 15, menu: 'style' },
|
||||||
},
|
},
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -33,7 +33,7 @@ function draftCharlieFlyFacing({ points, Point, paths, Path, macro, snippets, st
|
||||||
/*
|
/*
|
||||||
* Annotations
|
* Annotations
|
||||||
*/
|
*/
|
||||||
store.cutlist.setCut({ cut: 2, from: 'fabric' })
|
store.cutlist.setCut({ cut: 1, from: 'fabric' })
|
||||||
|
|
||||||
// Grainline
|
// Grainline
|
||||||
points.grainlineTop = points.flyTop.shiftFractionTowards(points.styleWaistIn, 0.5)
|
points.grainlineTop = points.flyTop.shiftFractionTowards(points.styleWaistIn, 0.5)
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
"@freesewing/plugin-gore": "3.2.0"
|
"@freesewing/plugin-gore": "3.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -101,6 +101,8 @@ export const back = {
|
||||||
ribbing: { bool: true, menu: 'style' },
|
ribbing: { bool: true, menu: 'style' },
|
||||||
ribbingHeight: { pct: 10, min: 5, max: 15, menu: 'style' },
|
ribbingHeight: { pct: 10, min: 5, max: 15, menu: 'style' },
|
||||||
hipsEase: { pct: 8, min: 4, max: 12, menu: 'fit' },
|
hipsEase: { pct: 8, min: 4, max: 12, menu: 'fit' },
|
||||||
|
// Override Brian's lengthbonus. See #6596
|
||||||
|
lengthBonus: { pct: 15, min: -4, max: 60, menu: 'style' },
|
||||||
},
|
},
|
||||||
draft: draftHueyBack,
|
draft: draftHueyBack,
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,7 +117,7 @@ export function draftRibbing(part, length) {
|
||||||
msg: `huey:cut${capitalize(part.name.split('.')[1])}`,
|
msg: `huey:cut${capitalize(part.name.split('.')[1])}`,
|
||||||
notes: [sa ? 'flag:saIncluded' : 'flag:saExcluded', 'flag:partHiddenByExpand'],
|
notes: [sa ? 'flag:saIncluded' : 'flag:saExcluded', 'flag:partHiddenByExpand'],
|
||||||
replace: {
|
replace: {
|
||||||
w: units(height + extraSa),
|
w: units(2 * height + extraSa),
|
||||||
l: units(length + extraSa),
|
l: units(length + extraSa),
|
||||||
},
|
},
|
||||||
suggest: {
|
suggest: {
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</a><a
|
</a><a
|
||||||
href="#contributors-"
|
href="#contributors-"
|
||||||
title="All Contributors"
|
title="All Contributors"
|
||||||
><img src="https://img.shields.io/badge/all_contributors-125-pink.svg"
|
><img src="https://img.shields.io/badge/all_contributors-128-pink.svg"
|
||||||
alt="All Contributors"/>
|
alt="All Contributors"/>
|
||||||
</a></p><p align='center'><a
|
</a></p><p align='center'><a
|
||||||
href="https://twitter.com/freesewing_org"
|
href="https://twitter.com/freesewing_org"
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.4.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.1.0",
|
||||||
"@freesewing/models": "3.2.0",
|
"@freesewing/models": "3.2.0",
|
||||||
"@freesewing/plugin-timing": "3.2.0"
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
|
17
designs/lily/CHANGELOG.md
Normal file
17
designs/lily/CHANGELOG.md
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Change log for: @freesewing/lily
|
||||||
|
|
||||||
|
|
||||||
|
## 3.0.0 (2023-09-30)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- All FreeSewing packages are now ESM only.
|
||||||
|
- All FreeSewing packages now use named exports.
|
||||||
|
- Dropped support for NodeJS 14. NodeJS 18 (LTS/hydrogen) or more recent is now required.
|
||||||
|
|
||||||
|
|
||||||
|
This is the **initial release**, and the start of this change log.
|
||||||
|
|
||||||
|
> Prior to version 2, FreeSewing was not a JavaScript project.
|
||||||
|
> As such, that history is out of scope for this change log.
|
||||||
|
|
162
designs/lily/README.md
Normal file
162
designs/lily/README.md
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
<p align='center'><a
|
||||||
|
href="https://www.npmjs.com/package/@freesewing/lily"
|
||||||
|
title="@freesewing/lily on NPM"
|
||||||
|
><img src="https://img.shields.io/npm/v/@freesewing/lily.svg"
|
||||||
|
alt="@freesewing/lily on NPM"/>
|
||||||
|
</a><a
|
||||||
|
href="https://opensource.org/licenses/MIT"
|
||||||
|
title="License: MIT"
|
||||||
|
><img src="https://img.shields.io/npm/l/@freesewing/lily.svg?label=License"
|
||||||
|
alt="License: MIT"/>
|
||||||
|
</a><a
|
||||||
|
href="https://deepscan.io/dashboard#view=project&tid=2114&pid=2993&bid=23256"
|
||||||
|
title="Code quality on DeepScan"
|
||||||
|
><img src="https://deepscan.io/api/teams/2114/projects/2993/branches/23256/badge/grade.svg"
|
||||||
|
alt="Code quality on DeepScan"/>
|
||||||
|
</a><a
|
||||||
|
href="https://github.com/freesewing/freesewing/issues?q=is%3Aissue+is%3Aopen+label%3Apkg%3Alily"
|
||||||
|
title="Open issues tagged pkg:lily"
|
||||||
|
><img src="https://img.shields.io/github/issues/freesewing/freesewing/pkg:lily.svg?label=Issues"
|
||||||
|
alt="Open issues tagged pkg:lily"/>
|
||||||
|
</a><a
|
||||||
|
href="#contributors-"
|
||||||
|
title="All Contributors"
|
||||||
|
><img src="https://img.shields.io/badge/all_contributors-126-pink.svg"
|
||||||
|
alt="All Contributors"/>
|
||||||
|
</a></p><p align='center'><a
|
||||||
|
href="https://twitter.com/freesewing_org"
|
||||||
|
title="Follow @freesewing_org on Twitter"
|
||||||
|
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-blue.svg?logo=twitter&logoColor=white&logoWidth=15"
|
||||||
|
alt="Follow @freesewing_org on Twitter"/>
|
||||||
|
</a><a
|
||||||
|
href="https://chat.freesewing.org"
|
||||||
|
title="Chat with us on Discord"
|
||||||
|
><img src="https://img.shields.io/discord/698854858052075530?label=Chat%20on%20Discord"
|
||||||
|
alt="Chat with us on Discord"/>
|
||||||
|
</a><a
|
||||||
|
href="https://freesewing.org/patrons/join"
|
||||||
|
title="Become a FreeSewing Patron"
|
||||||
|
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Support%20us-blueviolet.svg?logo=cash-app&logoColor=white&logoWidth=15"
|
||||||
|
alt="Become a FreeSewing Patron"/>
|
||||||
|
</a><a
|
||||||
|
href="https://instagram.com/freesewing_org"
|
||||||
|
title="Follow @freesewing_org on Twitter"
|
||||||
|
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-E4405F.svg?logo=instagram&logoColor=white&logoWidth=15"
|
||||||
|
alt="Follow @freesewing_org on Twitter"/>
|
||||||
|
</a></p>
|
||||||
|
|
||||||
|
# @freesewing/lily
|
||||||
|
|
||||||
|
A FreeSewing pattern for basic leggings
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# FreeSewing
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
>#### Support FreeSewing: Become a patron, or make a one-time donation 🥰
|
||||||
|
>
|
||||||
|
> FreeSewing is an open source project maintained by Joost De Cock and financially supported by the FreeSewing patrons.
|
||||||
|
>
|
||||||
|
> If you feel FreeSewing is worthwhile, and you can spend a few coins without
|
||||||
|
hardship, then you should [join us and become a patron](https://freesewing.org/community/join).
|
||||||
|
|
||||||
|
## What am I looking at? 🤔
|
||||||
|
|
||||||
|
This repository is the FreeSewing *monorepo* holding all FreeSewing's websites, documentation, designs, plugins, and other NPM packages.
|
||||||
|
|
||||||
|
This folder holds: @freesewing/lily
|
||||||
|
|
||||||
|
If you're not entirely sure what to do or how to start, type this command:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm run tips
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> If you don't want to set up a dev environment, you can run it in your browser:
|
||||||
|
>
|
||||||
|
> [](https://gitpod.io/#https://github.com/freesewing/freesewing)
|
||||||
|
>
|
||||||
|
> We recommend that you fork our repository and then
|
||||||
|
> put `gitpod.io/#<entire-url-of-your-fork` into a browser
|
||||||
|
> to start up a browser-based dev environment of your own.
|
||||||
|
|
||||||
|
## About FreeSewing 💀
|
||||||
|
|
||||||
|
Where the world of makers and developers collide, that's where you'll find FreeSewing.
|
||||||
|
|
||||||
|
If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate
|
||||||
|
sewing patterns adapted to your measurements.
|
||||||
|
|
||||||
|
If you're a developer, the FreeSewing documentation lives at [freesewing.dev](https://freesewing.dev/).
|
||||||
|
The FreeSewing [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox
|
||||||
|
for parametric design of sewing patterns. But FreeSewing also provides a range
|
||||||
|
of [plugins](https://freesewing.dev/reference/plugins/) that further extend the
|
||||||
|
functionality of the platform.
|
||||||
|
|
||||||
|
If you have NodeJS installed, you can try it right now by running:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx @freesewing/new-design
|
||||||
|
```
|
||||||
|
|
||||||
|
Getting started guides are available for:
|
||||||
|
- [Linux](https://freesewing.dev/tutorials/getting-started-linux/)
|
||||||
|
- [MacOS](https://freesewing.dev/tutorials/getting-started-mac/)
|
||||||
|
- [Windows](https://freesewing.dev/tutorials/getting-started-windows/)
|
||||||
|
|
||||||
|
The [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) will
|
||||||
|
show you how to create your first parametric design.
|
||||||
|
|
||||||
|
## Getting started ⚡
|
||||||
|
|
||||||
|
To get started with FreeSewing, you can spin up our development environment with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx @freesewing/new-design
|
||||||
|
```
|
||||||
|
|
||||||
|
To work with FreeSewing's monorepo, you'll need [NodeJS v18](https://nodejs.org), [lerna](https://lerna.js.org/) and [yarn](https://yarnpkg.com/) on your system.
|
||||||
|
Once you have those, clone (or fork) this repo and run `yarn kickstart`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone git@github.com:freesewing/freesewing.git
|
||||||
|
cd freesewing
|
||||||
|
yarn kickstart
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links 👩💻
|
||||||
|
|
||||||
|
**Official channels**
|
||||||
|
|
||||||
|
- 💻 Makers website: [FreeSewing.org](https://freesewing.org)
|
||||||
|
- 💻 Developers website: [FreeSewing.dev](https://freesewing.dev)
|
||||||
|
- ✅ [Support](https://github.com/freesewing/freesewing/issues/new/choose),
|
||||||
|
[Issues](https://github.com/freesewing/freesewing/issues) &
|
||||||
|
[Discussions](https://github.com/freesewing/freesewing/discussions) on
|
||||||
|
[GitHub](https://github.com/freesewing/freesewing)
|
||||||
|
|
||||||
|
**Social media**
|
||||||
|
|
||||||
|
- 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
|
||||||
|
- 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
|
||||||
|
|
||||||
|
**Places the FreeSewing community hangs out**
|
||||||
|
|
||||||
|
- 💬 [Discord](https://discord.freesewing.org/)
|
||||||
|
- 💬 [Facebook](https://www.facebook.com/groups/627769821272714/)
|
||||||
|
- 💬 [Reddit](https://www.reddit.com/r/freesewing/)
|
||||||
|
|
||||||
|
## License: MIT 🤓
|
||||||
|
|
||||||
|
© [Joost De Cock](https://github.com/joostdecock).
|
||||||
|
See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
|
||||||
|
|
||||||
|
## Where to get help 🤯
|
||||||
|
|
||||||
|
For [Support](https://github.com/freesewing/freesewing/issues/new/choose),
|
||||||
|
please use the [Issues](https://github.com/freesewing/freesewing/issues) &
|
||||||
|
[Discussions](https://github.com/freesewing/freesewing/discussions) on
|
||||||
|
[GitHub](https://github.com/freesewing/freesewing).
|
||||||
|
|
35
designs/lily/build.mjs
Normal file
35
designs/lily/build.mjs
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/* This script will build the package with esbuild */
|
||||||
|
import esbuild from 'esbuild'
|
||||||
|
import pkg from './package.json' assert { type: 'json' }
|
||||||
|
|
||||||
|
// Create banner based on package info
|
||||||
|
const banner = `/**
|
||||||
|
* ${pkg.name} | v${pkg.version}
|
||||||
|
* ${pkg.description}
|
||||||
|
* (c) ${new Date().getFullYear()} ${pkg.author}
|
||||||
|
* @license ${pkg.license}
|
||||||
|
*/`
|
||||||
|
|
||||||
|
// Shared esbuild options
|
||||||
|
const options = {
|
||||||
|
banner: { js: banner },
|
||||||
|
bundle: true,
|
||||||
|
entryPoints: ['src/index.mjs'],
|
||||||
|
format: 'esm',
|
||||||
|
outfile: 'dist/index.mjs',
|
||||||
|
external: ['@freesewing'],
|
||||||
|
metafile: process.env.VERBOSE ? true : false,
|
||||||
|
minify: process.env.NO_MINIFY ? false : true,
|
||||||
|
sourcemap: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Let esbuild generate the build
|
||||||
|
const build = async () => {
|
||||||
|
const result = await esbuild.build(options).catch(() => process.exit(1))
|
||||||
|
|
||||||
|
if (process.env.VERBOSE) {
|
||||||
|
const info = await esbuild.analyzeMetafile(result.metafile)
|
||||||
|
console.log(info)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
build()
|
4
designs/lily/data.mjs
Normal file
4
designs/lily/data.mjs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
// This file is auto-generated | All changes you make will be overwritten.
|
||||||
|
export const name = '@freesewing/lily'
|
||||||
|
export const version = '3.2.0'
|
||||||
|
export const data = { name, version }
|
7
designs/lily/i18n/de.json
Normal file
7
designs/lily/i18n/de.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"t": "Lily",
|
||||||
|
"d": "A FreeSewing pattern that needs a description",
|
||||||
|
"p": { },
|
||||||
|
"s": { },
|
||||||
|
"o": { }
|
||||||
|
}
|
24
designs/lily/i18n/en.json
Normal file
24
designs/lily/i18n/en.json
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"t": "Lily",
|
||||||
|
"d": "A FreeSewing pattern for basic leggings",
|
||||||
|
"p": {
|
||||||
|
"back": "Back",
|
||||||
|
"front": "Front",
|
||||||
|
"waistband": "Waistband"
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"adjustEase.t": "Adjust ease settings to match fabric stretch",
|
||||||
|
"adjustEase.d": "Knee, seat and waist ease should be set to fabric stretch * -1/10; click the button to adjust all three.",
|
||||||
|
"adjustEase": "adjust ease"
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"lengthReduction": {
|
||||||
|
"t": "Length reduction",
|
||||||
|
"d": "Controls how much the leggings are shortened with respect to ankle length"
|
||||||
|
},
|
||||||
|
"fabricStretch": {
|
||||||
|
"t": "Fabric stretch",
|
||||||
|
"d": "How much the fabric can stretch horizontally; this is used to calculate ease"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
7
designs/lily/i18n/es.json
Normal file
7
designs/lily/i18n/es.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"t": "Lily",
|
||||||
|
"d": "A FreeSewing pattern that needs a description",
|
||||||
|
"p": { },
|
||||||
|
"s": { },
|
||||||
|
"o": { }
|
||||||
|
}
|
7
designs/lily/i18n/fr.json
Normal file
7
designs/lily/i18n/fr.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"t": "Lily",
|
||||||
|
"d": "A FreeSewing pattern that needs a description",
|
||||||
|
"p": { },
|
||||||
|
"s": { },
|
||||||
|
"o": { }
|
||||||
|
}
|
8
designs/lily/i18n/index.mjs
Normal file
8
designs/lily/i18n/index.mjs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
import en from './en.json' assert { type: 'json' }
|
||||||
|
import de from './de.json' assert { type: 'json' }
|
||||||
|
import es from './es.json' assert { type: 'json' }
|
||||||
|
import fr from './fr.json' assert { type: 'json' }
|
||||||
|
import nl from './nl.json' assert { type: 'json' }
|
||||||
|
import uk from './uk.json' assert { type: 'json' }
|
||||||
|
|
||||||
|
export const i18n = { en, de, es, fr, nl, uk }
|
7
designs/lily/i18n/nl.json
Normal file
7
designs/lily/i18n/nl.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"t": "Lily",
|
||||||
|
"d": "A FreeSewing pattern that needs a description",
|
||||||
|
"p": { },
|
||||||
|
"s": { },
|
||||||
|
"o": { }
|
||||||
|
}
|
7
designs/lily/i18n/uk.json
Normal file
7
designs/lily/i18n/uk.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"t": "Lily",
|
||||||
|
"d": "A FreeSewing pattern that needs a description",
|
||||||
|
"p": { },
|
||||||
|
"s": { },
|
||||||
|
"o": { }
|
||||||
|
}
|
74
designs/lily/package.json
Normal file
74
designs/lily/package.json
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
"name": "@freesewing/lily",
|
||||||
|
"version": "3.2.0",
|
||||||
|
"description": "A FreeSewing pattern for basic leggings",
|
||||||
|
"author": "Anna Puk (https://github.com/anna-puk)",
|
||||||
|
"homepage": "https://freesewing.org/",
|
||||||
|
"repository": "github:freesewing/freesewing",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/freesewing/freesewing/issues"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "individual",
|
||||||
|
"url": "https://freesewing.org/patrons/join"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"freesewing",
|
||||||
|
"design",
|
||||||
|
"diy",
|
||||||
|
"fashion",
|
||||||
|
"made to measure",
|
||||||
|
"parametric design",
|
||||||
|
"pattern",
|
||||||
|
"sewing",
|
||||||
|
"sewing pattern"
|
||||||
|
],
|
||||||
|
"type": "module",
|
||||||
|
"module": "dist/index.mjs",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"internal": "./src/index.mjs",
|
||||||
|
"default": "./dist/index.mjs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "node build.mjs",
|
||||||
|
"build:all": "yarn build",
|
||||||
|
"clean": "rimraf dist",
|
||||||
|
"mbuild": "NO_MINIFY=1 node build.mjs",
|
||||||
|
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
|
||||||
|
"test": "npx mocha tests/*.test.mjs",
|
||||||
|
"vbuild": "VERBOSE=1 node build.mjs",
|
||||||
|
"lab": "cd ../../sites/lab && yarn start",
|
||||||
|
"tips": "node ../../scripts/help.mjs",
|
||||||
|
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
|
||||||
|
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
|
||||||
|
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
|
||||||
|
"wbuild": "node build.mjs",
|
||||||
|
"wbuild:all": "yarn wbuild"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@freesewing/core": "3.2.0",
|
||||||
|
"@freesewing/titan": "3.2.0",
|
||||||
|
"@freesewing/paco": "3.2.0"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"devDependencies": {
|
||||||
|
"mocha": "10.3.0",
|
||||||
|
"chai": "5.1.0",
|
||||||
|
"@freesewing/models": "3.2.0",
|
||||||
|
"@freesewing/plugin-timing": "3.2.0"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist/*",
|
||||||
|
"README.md"
|
||||||
|
],
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public",
|
||||||
|
"tag": "latest"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 18.17.0 <22"
|
||||||
|
}
|
||||||
|
}
|
590
designs/lily/src/back.mjs
Normal file
590
designs/lily/src/back.mjs
Normal file
|
@ -0,0 +1,590 @@
|
||||||
|
import { back as titanBack } from '@freesewing/titan'
|
||||||
|
|
||||||
|
function draftLilyBack({
|
||||||
|
points,
|
||||||
|
Point,
|
||||||
|
paths,
|
||||||
|
Path,
|
||||||
|
measurements,
|
||||||
|
options,
|
||||||
|
complete,
|
||||||
|
paperless,
|
||||||
|
store,
|
||||||
|
macro,
|
||||||
|
utils,
|
||||||
|
snippets,
|
||||||
|
Snippet,
|
||||||
|
sa,
|
||||||
|
absoluteOptions,
|
||||||
|
part,
|
||||||
|
log,
|
||||||
|
units,
|
||||||
|
}) {
|
||||||
|
//TODO: implement stretch setting to replace ease
|
||||||
|
// work-around: flag it
|
||||||
|
const stretchAsEase = -options.fabricStretch / 10
|
||||||
|
const easeTol = 0.005
|
||||||
|
if (
|
||||||
|
Math.abs(options.waistEase - stretchAsEase) > easeTol ||
|
||||||
|
Math.abs(options.seatEase - stretchAsEase) > easeTol ||
|
||||||
|
Math.abs(options.kneeEase - stretchAsEase) > easeTol
|
||||||
|
) {
|
||||||
|
store.flag.note({
|
||||||
|
msg: `lily:adjustEase`,
|
||||||
|
replace: {
|
||||||
|
stretch: units(options.fabricStretch),
|
||||||
|
ease: stretchAsEase,
|
||||||
|
},
|
||||||
|
suggest: {
|
||||||
|
text: 'adjustEase',
|
||||||
|
icon: 'options',
|
||||||
|
update: {
|
||||||
|
settings: [
|
||||||
|
'options',
|
||||||
|
{
|
||||||
|
...options,
|
||||||
|
waistEase: stretchAsEase,
|
||||||
|
seatEase: stretchAsEase,
|
||||||
|
kneeEase: stretchAsEase,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helper method to draw the inseam path
|
||||||
|
*/
|
||||||
|
const drawInseam = () =>
|
||||||
|
new Path()
|
||||||
|
.move(points.fork)
|
||||||
|
.curve(points.forkCp2, points.kneeInCp1, points.kneeIn)
|
||||||
|
.curve(points.kneeInCp2, points.floorInCp2, points.floorIn)
|
||||||
|
/*
|
||||||
|
* Helper method to draw the outseam path
|
||||||
|
*/
|
||||||
|
const drawOutseam = () => {
|
||||||
|
const waistOut = points.styleWaistOutLily || points.waistOut
|
||||||
|
if (points.waistOut.x > points.seatOut.x)
|
||||||
|
return new Path()
|
||||||
|
.move(points.floorOut)
|
||||||
|
.curve(points.floorOutCp2, points.kneeOutCp1, points.kneeOut)
|
||||||
|
.curve(points.kneeOutCp2, points.seatOut, waistOut)
|
||||||
|
else
|
||||||
|
return new Path()
|
||||||
|
.move(points.floorOut)
|
||||||
|
.curve(points.floorOutCp2, points.kneeOutCp1, points.kneeOut)
|
||||||
|
.curve(points.kneeOutCp2, points.seatOutCp1, points.seatOut)
|
||||||
|
.curve_(points.seatOutCp2, waistOut)
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Helper method to draw the outline path
|
||||||
|
*/
|
||||||
|
const drawPath = () => {
|
||||||
|
const waistIn = points.styleWaistInLily || points.waistIn
|
||||||
|
return drawInseam()
|
||||||
|
.line(points.floorOut)
|
||||||
|
.join(drawOutseam())
|
||||||
|
.line(waistIn)
|
||||||
|
.line(points.crossSeamCurveStart)
|
||||||
|
.curve(points.crossSeamCurveCp1, points.crossSeamCurveCp2, points.fork)
|
||||||
|
.close()
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Helper method to calculate the length of the cross seam
|
||||||
|
*/
|
||||||
|
const crossSeamDelta = () =>
|
||||||
|
new Path()
|
||||||
|
.move(points.waistIn)
|
||||||
|
.line(points.crossSeamCurveStart)
|
||||||
|
.curve(points.crossSeamCurveCp1, points.crossSeamCurveCp2, points.fork)
|
||||||
|
.length() - measurements.crossSeamBack
|
||||||
|
/*
|
||||||
|
* Helper method to (re)draw the cross seam
|
||||||
|
*/
|
||||||
|
const drawCrossSeam = () => {
|
||||||
|
points.crossSeamCurveStart = points.waistIn.shiftFractionTowards(
|
||||||
|
points.cbSeat,
|
||||||
|
options.crossSeamCurveStart
|
||||||
|
)
|
||||||
|
points.crossSeamCurveMax = utils.beamsIntersect(
|
||||||
|
points.waistIn,
|
||||||
|
points.cbSeat,
|
||||||
|
points.fork,
|
||||||
|
points.fork.shift(0, 1) // beams have infinite length anyway
|
||||||
|
)
|
||||||
|
points.crossSeamCurveCp1 = points.crossSeamCurveStart.shiftFractionTowards(
|
||||||
|
points.crossSeamCurveMax,
|
||||||
|
options.crossSeamCurveBend
|
||||||
|
)
|
||||||
|
points.crossSeamCurveCp2 = points.fork
|
||||||
|
.shiftFractionTowards(points.crossSeamCurveMax, options.crossSeamCurveBend)
|
||||||
|
.rotate(options.crossSeamCurveAngle, points.fork)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE: majority of points re-used from titan
|
||||||
|
|
||||||
|
// shape at the ankle (unlike titan)
|
||||||
|
const halfAnkle =
|
||||||
|
measurements.ankle * (1 + options.fabricStretch) > measurements.heel
|
||||||
|
? (1 - options.fabricStretch / 10) * (measurements.ankle / 4)
|
||||||
|
: measurements.heel / 4 / (1 + options.fabricStretch)
|
||||||
|
// NOTE: for shortened leggings, this may not have been necessary...
|
||||||
|
|
||||||
|
points.floorOut = points.floor.shift(0, halfAnkle)
|
||||||
|
points.floorIn = points.floorOut.flipX(points.floor)
|
||||||
|
|
||||||
|
store.set('halfAnkle', halfAnkle)
|
||||||
|
|
||||||
|
points.floorInCp2 = points.floorIn.shift(90, points.knee.dy(points.floor) / 3)
|
||||||
|
points.kneeInCp2 = points.kneeIn.shift(90, -points.knee.dy(points.floor) / 3)
|
||||||
|
points.floorOutCp2 = points.floorOut.shift(90, points.knee.dy(points.floor) / 3)
|
||||||
|
points.kneeOutCp1 = points.kneeOut.shift(90, -points.knee.dy(points.floor) / 3)
|
||||||
|
|
||||||
|
// other control points have already been calculated in titan:
|
||||||
|
// Control points to shape the legs towards the seat
|
||||||
|
// Balance the waist
|
||||||
|
|
||||||
|
// Cross seam
|
||||||
|
drawCrossSeam()
|
||||||
|
|
||||||
|
//Uncomment the line below to see the seam prior to fitting the cross seam
|
||||||
|
// paths.seam1 = drawPath().attr('class', 'dashed lining')
|
||||||
|
|
||||||
|
// Should we fit the cross seam?
|
||||||
|
if (options.fitCrossSeam && options.fitCrossSeamBack) {
|
||||||
|
let delta = crossSeamDelta()
|
||||||
|
let run = 0
|
||||||
|
do {
|
||||||
|
run++
|
||||||
|
// Remedy A: Slash and spread
|
||||||
|
for (const i of ['waistIn', 'waistOut'])
|
||||||
|
points[i] = points[i].rotate(delta / 15, points.seatOut)
|
||||||
|
// Remedy B: Nudge the fork inwards/outwards
|
||||||
|
points.fork = points.fork.shift(0, delta / 5)
|
||||||
|
points.forkCp2 = points.crossSeamCurveCp2.rotate(-90, points.fork)
|
||||||
|
drawCrossSeam()
|
||||||
|
delta = crossSeamDelta()
|
||||||
|
// Uncomment the line beloe this to see all iterations
|
||||||
|
// paths[`try${run}`] = drawPath().attr('class', 'dotted')
|
||||||
|
} while (Math.abs(delta) > 1 && run < 15)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store inseam & outseam length
|
||||||
|
store.set('inseamBack', drawInseam().length())
|
||||||
|
store.set('outseamBack', drawOutseam().length())
|
||||||
|
|
||||||
|
// Only now style the waist lower if requested
|
||||||
|
// Note: redo this for lily even though it was already done for titan;
|
||||||
|
// calculation for titan happened using its own seam lengths
|
||||||
|
store.set('waistbandWidth', absoluteOptions.waistbandWidth) // used in lilyWaistband
|
||||||
|
if (options.waistHeight < 1 || absoluteOptions.waistbandWidth > 0) {
|
||||||
|
points.styleWaistOutLily = drawOutseam()
|
||||||
|
.reverse()
|
||||||
|
.shiftAlong(
|
||||||
|
measurements.waistToHips * (1 - options.waistHeight) + absoluteOptions.waistbandWidth
|
||||||
|
)
|
||||||
|
points.styleWaistInLily = utils.beamsIntersect(
|
||||||
|
points.styleWaistOutLily,
|
||||||
|
points.styleWaistOutLily.shift(points.waistOut.angle(points.waistIn), 10),
|
||||||
|
points.waistIn,
|
||||||
|
points.crossSeamCurveStart
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
points.styleWaistInLily = points.waistIn.clone()
|
||||||
|
points.styleWaistOutLily = points.waistOut.clone()
|
||||||
|
}
|
||||||
|
// Adapt the vertical placement of the seat control point to the lowered waist
|
||||||
|
points.seatOutCp2.y = points.seatOut.y - points.styleWaistOutLily.dy(points.seatOut) / 2
|
||||||
|
let test = points.styleWaistInLily.dist(points.styleWaistOutLily)
|
||||||
|
console.log('back waist length', test)
|
||||||
|
store.set('backWaist', points.styleWaistInLily.dist(points.styleWaistOutLily))
|
||||||
|
|
||||||
|
// Paths
|
||||||
|
paths.seam = drawPath().attr('class', 'fabric')
|
||||||
|
|
||||||
|
// adjust the length (at the bottom)
|
||||||
|
let extendBeyondKnee = 1
|
||||||
|
if (options.lengthReduction > 0) {
|
||||||
|
let requestedLength = (1 - options.lengthReduction) * measurements.waistToFloor
|
||||||
|
// leggings must reach to fork at least, so define a minimum
|
||||||
|
const waistToFork = points.waistX.dy(points.fork)
|
||||||
|
if (waistToFork >= 0.999 * requestedLength) {
|
||||||
|
log.warn('length reduction capped; cutting off at fork')
|
||||||
|
// add one percent to waistToFork to ensure that path length is nonzero
|
||||||
|
requestedLength = waistToFork * 1.01
|
||||||
|
}
|
||||||
|
|
||||||
|
// work-around to avoid splitting exactly at the knee
|
||||||
|
// (due to a bug, splitting a path at a node is not possible)
|
||||||
|
if (
|
||||||
|
0.999 < requestedLength / measurements.waistToKnee &&
|
||||||
|
requestedLength / measurements.waistToKnee < 1.001
|
||||||
|
) {
|
||||||
|
requestedLength = 1.001 * measurements.waistToKnee
|
||||||
|
}
|
||||||
|
points.bottom = points.waistX.shift(270, requestedLength)
|
||||||
|
let upperPoint, upperCp
|
||||||
|
if (requestedLength < measurements.waistToKnee) {
|
||||||
|
extendBeyondKnee = 0
|
||||||
|
|
||||||
|
// 'cut' between fork and knee
|
||||||
|
if (points.waistOut.x > points.seatOut.x) {
|
||||||
|
upperPoint = points.styleWaistOutLily
|
||||||
|
upperCp = points.seatOut
|
||||||
|
} else {
|
||||||
|
upperPoint = points.seatOut
|
||||||
|
upperCp = points.seatOutCp1
|
||||||
|
}
|
||||||
|
points.bottomOut = utils.beamIntersectsCurve(
|
||||||
|
points.bottom.shift(0, 999),
|
||||||
|
points.bottom.shift(180, 999),
|
||||||
|
points.kneeOut,
|
||||||
|
points.kneeOutCp2,
|
||||||
|
upperCp,
|
||||||
|
upperPoint
|
||||||
|
)
|
||||||
|
|
||||||
|
points.bottomIn = utils.beamIntersectsCurve(
|
||||||
|
points.bottom.shift(0, 999),
|
||||||
|
points.bottom.shift(180, 999),
|
||||||
|
points.kneeIn,
|
||||||
|
points.kneeInCp1,
|
||||||
|
points.forkCp2,
|
||||||
|
points.fork
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
// 'cut' between knee and 'floor'
|
||||||
|
points.bottomOut = utils.beamIntersectsCurve(
|
||||||
|
points.bottom.shift(0, 999),
|
||||||
|
points.bottom.shift(180, 999),
|
||||||
|
points.kneeOut,
|
||||||
|
points.kneeOutCp1,
|
||||||
|
points.floorOutCp2,
|
||||||
|
points.floorOut
|
||||||
|
)
|
||||||
|
|
||||||
|
points.bottomIn = utils.beamIntersectsCurve(
|
||||||
|
points.bottom.shift(0, 999),
|
||||||
|
points.bottom.shift(180, 999),
|
||||||
|
points.kneeIn,
|
||||||
|
points.kneeInCp2,
|
||||||
|
points.floorInCp2,
|
||||||
|
points.floorIn
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// define the three parts of the path, then combine
|
||||||
|
paths.bottom = new Path().move(points.bottomIn).line(points.bottomOut)
|
||||||
|
|
||||||
|
const halves = paths.seam.split(points.bottomIn)
|
||||||
|
paths.upperInseam = halves[0]
|
||||||
|
const halves2 = halves[1].split(points.bottomOut)
|
||||||
|
paths.upperOutseam = halves2[1]
|
||||||
|
|
||||||
|
paths.seam = paths.upperInseam.join(paths.bottom).join(paths.upperOutseam)
|
||||||
|
|
||||||
|
// store requestedLength for use in front part
|
||||||
|
store.set('requestedLength', requestedLength)
|
||||||
|
} else {
|
||||||
|
// define the same three parts of the path as when length reduction is enabled, then combine
|
||||||
|
|
||||||
|
// first define the points (also used for paperless)
|
||||||
|
points.bottom = points.floor
|
||||||
|
points.bottomIn = points.floorIn
|
||||||
|
points.bottomOut = points.floorOut
|
||||||
|
|
||||||
|
paths.bottom = new Path().move(points.bottomIn).line(points.bottomOut)
|
||||||
|
|
||||||
|
// note: upperOutseam contains waist and cross seam as well
|
||||||
|
paths.upperInseam = drawInseam()
|
||||||
|
paths.upperOutseam = drawOutseam().join(
|
||||||
|
new Path()
|
||||||
|
.move(points.styleWaistOutLily)
|
||||||
|
.line(points.styleWaistInLily)
|
||||||
|
.line(points.crossSeamCurveStart)
|
||||||
|
.curve(points.crossSeamCurveCp1, points.crossSeamCurveCp2, points.fork)
|
||||||
|
)
|
||||||
|
paths.bottom.hide()
|
||||||
|
paths.upperInseam.hide()
|
||||||
|
paths.upperOutseam.hide()
|
||||||
|
}
|
||||||
|
|
||||||
|
points.grainlineTop.y = points.styleWaistOutLily.y
|
||||||
|
points.grainlineBottom.y = points.bottom.y
|
||||||
|
macro('grainline', {
|
||||||
|
from: points.grainlineTop,
|
||||||
|
to: points.grainlineBottom,
|
||||||
|
})
|
||||||
|
points.logoAnchor = new Point(points.crossSeamCurveStart.x / 2, points.fork.y)
|
||||||
|
snippets.logo = new Snippet('logo', points.logoAnchor)
|
||||||
|
points.scalebox = points.logoAnchor.shiftFractionTowards(
|
||||||
|
points.styleWaistOutLily.shiftFractionTowards(points.styleWaistInLily, 0.5),
|
||||||
|
0.5
|
||||||
|
)
|
||||||
|
macro('scalebox', { at: points.scalebox })
|
||||||
|
points.titleAnchor = points.logoAnchor.shift(-90, 60)
|
||||||
|
macro('title', {
|
||||||
|
nr: 1,
|
||||||
|
title: 'back',
|
||||||
|
at: points.titleAnchor,
|
||||||
|
})
|
||||||
|
|
||||||
|
//notches
|
||||||
|
if (options.fitGuides) {
|
||||||
|
points.waistMid = points.waistOut.shiftFractionTowards(points.waistIn, 0.5)
|
||||||
|
// shift + rotate (below) is equivalent to shifting measurements.waistToSeat perpendicular to the waistIn-waistMid line
|
||||||
|
points.seatMid = points.waistMid
|
||||||
|
.shiftTowards(points.waistIn, measurements.waistToSeat)
|
||||||
|
.rotate(90, points.waistMid)
|
||||||
|
points.seatInTarget = points.seatOut.shiftOutwards(points.seatMid, measurements.seat / 4)
|
||||||
|
points.seatOutTarget = points.seatMid.shiftTowards(points.seatOut, measurements.seat / 4)
|
||||||
|
// shift + rotate (below) is equivalent to shifting measurements.waistToHips perpendicular to the waistIn-waistOut line
|
||||||
|
points.hipsInTarget = points.waistIn
|
||||||
|
.shiftTowards(points.waistOut, measurements.waistToHips)
|
||||||
|
.rotate(-90, points.waistIn)
|
||||||
|
points.hipsOutTarget = points.waistOut
|
||||||
|
.shiftTowards(points.waistIn, measurements.waistToHips)
|
||||||
|
.rotate(90, points.waistOut)
|
||||||
|
points.hipsIn = utils.beamsIntersect(
|
||||||
|
points.hipsOutTarget,
|
||||||
|
points.hipsInTarget,
|
||||||
|
points.waistIn,
|
||||||
|
points.crossSeamCurveStart
|
||||||
|
)
|
||||||
|
points.crossSeamCurveStartMid = utils.beamsIntersect(
|
||||||
|
points.crossSeamCurveStart,
|
||||||
|
points.crossSeamCurveStart.shift(points.waistIn.angle(points.waistOut), 1),
|
||||||
|
points.waistMid,
|
||||||
|
points.seatMid
|
||||||
|
)
|
||||||
|
if (points.seatMid.y > points.crossSeamCurveStartMid.y) {
|
||||||
|
points.seatIn = utils.lineIntersectsCurve(
|
||||||
|
points.seatMid,
|
||||||
|
points.seatInTarget,
|
||||||
|
points.crossSeamCurveStart,
|
||||||
|
points.crossSeamCurveCp1,
|
||||||
|
points.crossSeamCurveCp2,
|
||||||
|
points.fork
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
points.seatIn = utils.beamsIntersect(
|
||||||
|
points.seatMid,
|
||||||
|
points.seatInTarget,
|
||||||
|
points.waistIn,
|
||||||
|
points.crossSeamCurveStart
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if (points.waistOut.x > points.seatOut.x) {
|
||||||
|
points.hipsOut = utils.lineIntersectsCurve(
|
||||||
|
points.hipsIn,
|
||||||
|
points.hipsIn.rotate(180, points.hipsOutTarget),
|
||||||
|
points.kneeOut,
|
||||||
|
points.kneeOutCp2,
|
||||||
|
points.seatOut,
|
||||||
|
points.waistOut
|
||||||
|
)
|
||||||
|
points.seatOutNotch = utils.lineIntersectsCurve(
|
||||||
|
points.seatMid,
|
||||||
|
points.seatOutTarget,
|
||||||
|
points.kneeOut,
|
||||||
|
points.kneeOutCp2,
|
||||||
|
points.seatOut,
|
||||||
|
points.waistOut
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
points.hipsOut = utils.lineIntersectsCurve(
|
||||||
|
points.hipsIn,
|
||||||
|
points.hipsIn.rotate(180, points.hipsOutTarget),
|
||||||
|
points.seatOut,
|
||||||
|
points.seatOutCp2,
|
||||||
|
points.waistOut,
|
||||||
|
points.waistOut
|
||||||
|
)
|
||||||
|
points.seatOutNotch = points.seatOut
|
||||||
|
}
|
||||||
|
points.kneeOutNotch = points.kneeOut
|
||||||
|
points.kneeInNotch = points.kneeIn
|
||||||
|
macro('sprinkle', {
|
||||||
|
snippet: 'notch',
|
||||||
|
on: ['seatOutNotch'],
|
||||||
|
})
|
||||||
|
if (extendBeyondKnee) {
|
||||||
|
macro('sprinkle', {
|
||||||
|
snippet: 'notch',
|
||||||
|
on: ['kneeInNotch', 'kneeOutNotch'],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
macro('sprinkle', {
|
||||||
|
snippet: 'bnotch',
|
||||||
|
on: ['crossSeamCurveStart', 'seatIn'],
|
||||||
|
})
|
||||||
|
|
||||||
|
if (complete) {
|
||||||
|
paths.seatline = new Path()
|
||||||
|
.move(points.seatIn)
|
||||||
|
.line(points.seatOutNotch)
|
||||||
|
.addClass('fabric help')
|
||||||
|
.addText('Seat Line', 'center')
|
||||||
|
if (
|
||||||
|
measurements.waistToHips * (1 - options.waistHeight) + absoluteOptions.waistbandWidth <
|
||||||
|
measurements.waistToHips
|
||||||
|
) {
|
||||||
|
snippets.hipsIn = new Snippet('bnotch', points.hipsIn)
|
||||||
|
snippets.hipsOut = new Snippet('notch', points.hipsOut)
|
||||||
|
paths.hipline = new Path()
|
||||||
|
.move(points.hipsIn)
|
||||||
|
.line(points.hipsOut)
|
||||||
|
.addClass('fabric help')
|
||||||
|
.addText('Hip Line', 'center')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sa) {
|
||||||
|
paths.saBase = paths.upperOutseam.join(paths.upperInseam).hide()
|
||||||
|
paths.hemBase = paths.bottom.hide()
|
||||||
|
paths.sa = paths.hemBase
|
||||||
|
.offset(sa * 3)
|
||||||
|
.join(paths.saBase.offset(sa))
|
||||||
|
.close()
|
||||||
|
.addClass('fabric sa')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (paperless) {
|
||||||
|
// Help construct cross seam
|
||||||
|
paths.hint = new Path()
|
||||||
|
.move(points.crossSeamCurveStart)
|
||||||
|
.line(points.crossSeamCurveMax)
|
||||||
|
.line(points.fork)
|
||||||
|
.addClass('note lashed')
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wHem',
|
||||||
|
from: points.bottomIn,
|
||||||
|
to: points.bottomOut,
|
||||||
|
y: points.bottomIn.y - 30,
|
||||||
|
})
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wHemLeft',
|
||||||
|
from: points.bottomIn,
|
||||||
|
to: points.bottom,
|
||||||
|
y: points.bottomIn.y - 15,
|
||||||
|
})
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wHemRight',
|
||||||
|
from: points.bottom,
|
||||||
|
to: points.bottomOut,
|
||||||
|
y: points.bottomIn.y - 15,
|
||||||
|
})
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hHemToSideWaist',
|
||||||
|
from: points.bottomOut,
|
||||||
|
to: points.styleWaistOutLily,
|
||||||
|
x:
|
||||||
|
(points.seatOut.x > points.styleWaistOutLily.x
|
||||||
|
? points.seatOut.x
|
||||||
|
: points.styleWaistOutLily.x) +
|
||||||
|
sa +
|
||||||
|
15,
|
||||||
|
})
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hHemToFork',
|
||||||
|
from: points.bottomIn,
|
||||||
|
to: points.fork,
|
||||||
|
x: points.fork.x - sa - 15,
|
||||||
|
})
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hForkToCbWaist',
|
||||||
|
from: points.fork,
|
||||||
|
to: points.styleWaistInLily,
|
||||||
|
x: points.fork.x - sa - 15,
|
||||||
|
})
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hFull',
|
||||||
|
from: points.bottomIn,
|
||||||
|
to: points.styleWaistInLily,
|
||||||
|
x: points.fork.x - sa - 30,
|
||||||
|
})
|
||||||
|
macro('vd', {
|
||||||
|
id: 'hStartCrotchCurveToCbWaist',
|
||||||
|
from: points.crossSeamCurveStart,
|
||||||
|
to: points.styleWaistInLily,
|
||||||
|
x: points.crossSeamCurveStart.x - sa - 15,
|
||||||
|
})
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wCbWaistToPleat',
|
||||||
|
from: points.styleWaistInLily,
|
||||||
|
to: points.grainlineTop,
|
||||||
|
y: points.styleWaistInLily.y - sa - 15,
|
||||||
|
})
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wStartCrotchCurveToPleat',
|
||||||
|
from: points.crossSeamCurveStart,
|
||||||
|
to: points.grainlineTop,
|
||||||
|
y: points.styleWaistInLily.y - sa - 30,
|
||||||
|
})
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wForkProjectionToPleat',
|
||||||
|
from: points.crossSeamCurveMax,
|
||||||
|
to: points.grainlineTop,
|
||||||
|
y: points.styleWaistInLily.y - sa - 45,
|
||||||
|
})
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wForkToPleat',
|
||||||
|
from: points.fork,
|
||||||
|
to: points.grainlineTop,
|
||||||
|
y: points.styleWaistInLily.y - sa - 60,
|
||||||
|
})
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wPleatToSideWaist',
|
||||||
|
from: points.grainlineTop,
|
||||||
|
to: points.styleWaistOutLily,
|
||||||
|
y: points.styleWaistInLily.y - sa - 15,
|
||||||
|
})
|
||||||
|
if (points.seatOut.x > points.styleWaistOutLily.x) {
|
||||||
|
macro('hd', {
|
||||||
|
id: 'wPleatToSideWaistAlt',
|
||||||
|
from: points.grainlineTop,
|
||||||
|
to: points.seatOut,
|
||||||
|
y: points.styleWaistInLily.y - sa - 30,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return part
|
||||||
|
}
|
||||||
|
|
||||||
|
export const back = {
|
||||||
|
name: 'lily.back',
|
||||||
|
from: titanBack,
|
||||||
|
//after: titanFront,
|
||||||
|
measurements: [
|
||||||
|
'ankle',
|
||||||
|
'heel', // secondary measurement, used instead of ankle
|
||||||
|
],
|
||||||
|
options: {
|
||||||
|
fitGuides: { bool: false, menu: 'advanced' },
|
||||||
|
fitKnee: { bool: true, hide: true },
|
||||||
|
legBalance: 0.5, // between back and front parts
|
||||||
|
waistBalance: 0.5,
|
||||||
|
crotchDrop: { pct: 0, min: 0, max: 15, menu: 'advanced' }, // 'downgrade' to advanced menu
|
||||||
|
waistHeight: { ...titanBack.options.waistHeight, pct: 50 }, // halfway between waist and hips
|
||||||
|
fabricStretch: { pct: 40, min: 0, max: 50, menu: 'fit' },
|
||||||
|
waistEase: { pct: -4, min: -20, max: 0, menu: 'fit' }, // -fabricStretch/10,
|
||||||
|
seatEase: { pct: -4, min: -20, max: 0, menu: 'fit' }, // -fabricStretch/10,
|
||||||
|
kneeEase: { pct: -4, min: -20, max: 0, menu: 'fit' }, // -fabricStretch/10,
|
||||||
|
//test: {pct: back.options.fabricStretch/2, min: 0, max: 50, menu: 'fit'},
|
||||||
|
lengthBonus: 0,
|
||||||
|
lengthReduction: {
|
||||||
|
pct: 0,
|
||||||
|
min: 0,
|
||||||
|
max: 100,
|
||||||
|
toAbs: (pct, { measurements }) => measurements.waistToFloor * pct,
|
||||||
|
menu: 'style',
|
||||||
|
},
|
||||||
|
waistbandWidth: { ...titanBack.options.waistbandWidth, menu: 'style' },
|
||||||
|
},
|
||||||
|
hide: 'HIDE_TREE',
|
||||||
|
draft: draftLilyBack,
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue