commit
d0fa4eaad5
23 changed files with 1463 additions and 0 deletions
31
packages/holmes/README.md
Normal file
31
packages/holmes/README.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
# holmes
|
||||
|
||||
> Sherlock Holmes hat
|
||||
|
||||
[](https://www.npmjs.com/package/holmes) [](https://standardjs.com)
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
npm install --save holmes
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```jsx
|
||||
import React, { Component } from 'react'
|
||||
|
||||
import MyComponent from 'holmes'
|
||||
|
||||
class Example extends Component {
|
||||
render () {
|
||||
return (
|
||||
<MyComponent />
|
||||
)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
© [AlfaLyr](https://github.com/AlfaLyr)
|
38
packages/holmes/config/index.js
Normal file
38
packages/holmes/config/index.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
import { version } from "../package.json";
|
||||
|
||||
// ?? 🤔 ?? --> https://en.freesewing.dev/packages/core/config
|
||||
|
||||
export default {
|
||||
name: "holmes",
|
||||
version,
|
||||
design: "AlfaLyr",
|
||||
code: "AlfaLyr",
|
||||
department: "accessories",
|
||||
type: "pattern",
|
||||
difficulty: 3,
|
||||
tags: [
|
||||
"freesewing",
|
||||
"design",
|
||||
"diy",
|
||||
"fashion",
|
||||
"made to measure",
|
||||
"parametric design",
|
||||
"pattern",
|
||||
"sewing",
|
||||
"sewing pattern"
|
||||
],
|
||||
optionGroups: {
|
||||
style: ["lengthRatio", "goreNumber", "brimAngle", "brimWidth"]
|
||||
},
|
||||
measurements: ["headCircumference"],
|
||||
dependencies: {},
|
||||
inject: {},
|
||||
hide: [],
|
||||
parts: ["gore", "brim", "ear"],
|
||||
options: {
|
||||
lengthRatio: { pct: 55, min: 40, max: 60 },
|
||||
goreNumber: { count: 6, min: 4, max: 20 },
|
||||
brimAngle: { deg: 45, min: 10, max:90 },
|
||||
brimWidth: { mm: 30, min: 5, max: 100 }
|
||||
}
|
||||
};
|
130
packages/holmes/drawings/brimangle.svg
Normal file
130
packages/holmes/drawings/brimangle.svg
Normal file
|
@ -0,0 +1,130 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="1058.7223"
|
||||
height="369.78207"
|
||||
id="svg13134"
|
||||
sodipodi:docname="brimangle.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
id="namedview14"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="1.3111243"
|
||||
inkscape:cx="527.95302"
|
||||
inkscape:cy="194.92854"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg13134" />
|
||||
<metadata
|
||||
id="metadata3096">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs13136" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-3"
|
||||
d="M 239.63888,17.442486 C 309.12282,14.133576 167.64573,211.62738 95.152493,195.48226 76.174253,191.25558 94.266123,92.465876 137.88064,54.260666 c 45.59634,-39.94121 81.24825,-35.84146 101.75824,-36.81818 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674"
|
||||
d="M 88.607503,238.47696 C 81.174863,92.580296 170.28453,19.159706 251.30874,17.133726 440.34425,12.406986 434.50477,214.46405 434.50477,214.46405 c 4.42809,-11.49225 106.83797,30.00462 -2.23515,61.01463 -17.08194,4.85648 -32.00111,11.3221 -82.39397,8.45492 -37.63175,17.82203 -92.55368,35.96049 -167.38954,44.06064 C 117.26012,335.05423 17.870374,301.47395 2.8754956,282.62858 -6.4267404,270.93765 54.706283,255.51536 88.607503,238.47696 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscscssc" />
|
||||
<g
|
||||
transform="matrix(0.991716,0,0,0.991716,223.25012,512.89649)"
|
||||
style="fill:#212121;stroke:#545454"
|
||||
id="g4303" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67"
|
||||
d="M 150.95432,256.46932 C 146.40375,197.03483 189.89881,85.916856 263.9899,21.168636"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-5"
|
||||
d="M 349.87565,283.9336 C 192.2035,267.20551 146.34201,258.48599 88.607503,238.47696"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6"
|
||||
d="m 283.29319,22.594036 c 3.79974,-11.58118 71.55244,-0.42441 105.32678,31.90705 55.21804,52.859064 78.36975,184.859614 61.84481,203.456854 -11.45276,12.88898 -21.57439,23.81728 -38.81422,28.53139 -22.34126,6.10906 -33.82853,4.667 -57.7438,2.00614 -22.16439,-2.46605 -15.95091,-86.94719 -63.69659,-182.97783 -7.58963,-15.264984 -12.09994,-67.126484 -6.91698,-82.923604 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssssss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-5"
|
||||
d="m 268.63846,20.184136 c -16.18864,33.02752 -54.92821,38.49401 -61.68452,32.04878 -7.56831,-7.21981 38.17865,-57.1909599 60.55119,-31.48217 2.08865,2.40013 70.63727,20.24099 51.82058,-7.65192 -12.58672,-18.6579199 -47.69001,0.97044 -50.68725,7.08531 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-3-0"
|
||||
d="M 819.15463,17.208006 C 888.6386,13.899096 747.16145,211.3929 674.66825,195.24778 c -18.9783,-4.22668 -0.8864,-103.016384 42.7281,-141.221594 45.5964,-39.94121 81.2483,-35.84146 101.75828,-36.81818 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-9"
|
||||
d="M 668.12325,238.24248 C 660.69065,92.345816 749.80025,18.925226 830.82449,16.899246 1019.86,12.172506 1031.5627,235.58529 1031.5627,235.58529 c 6.1886,1.60553 63.9213,95.53241 -19.7773,39.65891 -14.77027,-9.85998 -32.0011,11.3221 -82.394,8.45492 -11.6998,23.16096 -22.36308,77.97434 -57.56014,82.19585 -70.33596,8.43604 -192.51267,-13.11274 -229.94917,-32.39969 -20.41154,-10.51584 4.56402,-62.32369 26.24116,-95.2528 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscscssc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-3"
|
||||
d="m 730.47005,256.23484 c -4.5506,-59.43449 38.9445,-170.552464 113.0356,-235.300684"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-5-6"
|
||||
d="M 929.3914,283.69912 C 771.71925,266.97103 725.85775,258.25151 668.12325,238.24248"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-0"
|
||||
d="m 862.80894,22.359556 c 3.79974,-11.58118 71.55246,-0.42441 105.32676,31.90705 55.2181,52.859064 78.3698,184.859614 61.8448,203.456854 -11.4527,12.88898 -21.5744,23.81728 -38.8142,28.53139 -22.3413,6.10906 -33.8285,4.667 -57.7438,2.00614 -22.1644,-2.46605 -15.9509,-86.94719 -63.69658,-182.97783 -7.58963,-15.264984 -12.09994,-67.126484 -6.91698,-82.923604 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssssss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-5-6"
|
||||
d="m 848.15421,19.949656 c -16.18864,33.02752 -54.92826,38.49401 -61.68456,32.04878 -7.5683,-7.21981 38.17869,-57.1909599 60.55123,-31.48217 2.08865,2.40013 70.63722,20.24099 51.82062,-7.65192 -12.5868,-18.6579199 -47.69005,0.97044 -50.68729,7.08531 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
</svg>
|
After Width: | Height: | Size: 7.3 KiB |
130
packages/holmes/drawings/brimwidth.svg
Normal file
130
packages/holmes/drawings/brimwidth.svg
Normal file
|
@ -0,0 +1,130 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="1036.226"
|
||||
height="379.24622"
|
||||
id="svg13134"
|
||||
sodipodi:docname="brimlength.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
id="namedview14"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="1.3569363"
|
||||
inkscape:cx="518.14713"
|
||||
inkscape:cy="190.88463"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg13134" />
|
||||
<metadata
|
||||
id="metadata3096">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs13136" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-3"
|
||||
d="M 185.79963,17.442486 C 255.28357,14.133576 113.80648,211.62738 41.313244,195.48226 22.335004,191.25558 40.426874,92.465876 84.041387,54.260666 129.63773,14.319456 165.28964,18.419206 185.79963,17.442486 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674"
|
||||
d="M 34.768254,238.47696 C 27.335614,92.580296 116.44528,19.159706 197.46949,17.133726 386.505,12.406986 398.20772,235.81977 398.20772,235.81977 c 1.40857,-1.85331 51.55552,43.37733 -19.77735,39.65891 -17.73481,-0.92447 -32.00111,11.3221 -82.39397,8.45492 -11.69981,23.16096 -32.47468,46.03009 -67.91594,46.78453 C 151.13304,332.35696 46.486962,313.58168 9.7308938,294.10272 -10.557363,283.35091 13.091124,271.40607 34.768254,238.47696 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscscssc" />
|
||||
<g
|
||||
transform="matrix(0.991716,0,0,0.991716,169.41087,512.89649)"
|
||||
style="fill:#212121;stroke:#545454"
|
||||
id="g4303" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67"
|
||||
d="M 97.115067,256.46932 C 92.564497,197.03483 136.05956,85.916856 210.15065,21.168636"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-5"
|
||||
d="M 296.0364,283.9336 C 138.36425,267.20551 92.502757,258.48599 34.768254,238.47696"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6"
|
||||
d="m 229.45394,22.594036 c 3.79974,-11.58118 71.55244,-0.42441 105.32678,31.90705 55.21804,52.859064 78.36975,184.859614 61.84481,203.456854 -11.45276,12.88898 -21.57439,23.81728 -38.81422,28.53139 -22.34126,6.10906 -33.82853,4.667 -57.7438,2.00614 -22.16439,-2.46605 -15.95091,-86.94719 -63.69659,-182.97783 -7.58963,-15.264984 -12.09994,-67.126484 -6.91698,-82.923604 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssssss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-5"
|
||||
d="m 214.79921,20.184136 c -16.18864,33.02752 -54.92821,38.49401 -61.68452,32.04878 -7.56831,-7.21981 38.17865,-57.1909599 60.55119,-31.48217 2.08865,2.40013 70.63727,20.24099 51.82058,-7.65192 -12.58672,-18.6579199 -47.69001,0.97044 -50.68725,7.08531 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-3-0"
|
||||
d="M 765.31538,17.208006 C 834.79935,13.899096 693.3222,211.3929 620.829,195.24778 601.8507,191.0211 619.9426,92.231396 663.5571,54.026186 c 45.5964,-39.94121 81.2483,-35.84146 101.75828,-36.81818 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-9"
|
||||
d="M 614.284,238.24248 C 606.8514,92.345816 695.961,18.925226 776.98524,16.899246 966.02075,12.172506 977.72342,235.58529 977.72342,235.58529 c 8.7242,2.77493 134.32738,93.94871 -19.77727,39.65891 -16.74992,-5.90086 -32.0011,11.3221 -82.394,8.45492 -11.6998,23.16096 -52.42388,79.4373 -86.96386,87.41499 -80.37237,18.56358 -212.70953,-9.14732 -249.34173,-29.24587 -20.1303,-11.04468 53.3603,-70.69665 75.03744,-103.62576 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscscssc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-3"
|
||||
d="M 676.6308,256.23484 C 672.0802,196.80035 715.5753,85.682376 789.6664,20.934156"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-5-6"
|
||||
d="M 875.55215,283.69912 C 717.88,266.97103 672.0185,258.25151 614.284,238.24248"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-0"
|
||||
d="m 808.96969,22.359556 c 3.79974,-11.58118 71.55246,-0.42441 105.32676,31.90705 55.2181,52.859064 78.36977,184.859614 61.84477,203.456854 -11.45267,12.88898 -21.57437,23.81728 -38.81417,28.53139 -22.3413,6.10906 -33.8285,4.667 -57.7438,2.00614 -22.1644,-2.46605 -15.9509,-86.94719 -63.69658,-182.97783 -7.58963,-15.264984 -12.09994,-67.126484 -6.91698,-82.923604 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssssss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-5-6"
|
||||
d="m 794.31496,19.949656 c -16.18864,33.02752 -54.92826,38.49401 -61.68456,32.04878 -7.5683,-7.21981 38.17869,-57.1909599 60.55123,-31.48217 2.08865,2.40013 70.63722,20.24099 51.82062,-7.65192 -12.5868,-18.6579199 -47.69005,0.97044 -50.68729,7.08531 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
</svg>
|
After Width: | Height: | Size: 7.3 KiB |
142
packages/holmes/drawings/gorenumber.svg
Normal file
142
packages/holmes/drawings/gorenumber.svg
Normal file
|
@ -0,0 +1,142 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="1050.3943"
|
||||
height="360.95767"
|
||||
id="svg13134"
|
||||
sodipodi:docname="linedrawing.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
id="namedview14"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="1.3374514"
|
||||
inkscape:cx="492.01785"
|
||||
inkscape:cy="165.45687"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg13134" />
|
||||
<metadata
|
||||
id="metadata3096">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs13136" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-3"
|
||||
d="M 216.27841,17.442486 C 285.76235,14.133576 144.28526,211.62738 71.792027,195.48226 52.813787,191.25558 70.905657,92.465876 114.52017,54.260666 c 45.59634,-39.94121 81.24825,-35.84146 101.75824,-36.81818 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674"
|
||||
d="M 65.247037,238.47696 C 57.814397,92.580296 146.92406,19.159706 227.94827,17.133726 416.98378,12.406986 428.6865,235.81977 428.6865,235.81977 c 6.21243,1.59293 98.63729,77.15338 -19.77735,39.65891 -16.93044,-5.36081 -32.00111,11.3221 -82.39397,8.45492 -11.69981,23.16096 -48.95213,60.48948 -83.49208,68.46717 C 162.65073,370.96435 42.841827,346.20127 6.2096769,326.10272 -13.920643,315.05804 43.569907,271.40607 65.247037,238.47696 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscscssc" />
|
||||
<g
|
||||
transform="matrix(0.991716,0,0,0.991716,199.88965,512.89649)"
|
||||
style="fill:#212121;stroke:#545454"
|
||||
id="g4303" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67"
|
||||
d="M 127.59385,256.46932 C 123.04328,197.03483 166.53834,85.916856 240.62943,21.168636"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-5"
|
||||
d="M 326.51518,283.9336 C 168.84303,267.20551 122.98154,258.48599 65.247037,238.47696"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6"
|
||||
d="m 259.93272,22.594036 c 3.79974,-11.58118 71.55244,-0.42441 105.32678,31.90705 55.21804,52.859064 78.36975,184.859614 61.84481,203.456854 -11.45276,12.88898 -21.57439,23.81728 -38.81422,28.53139 -22.34126,6.10906 -33.82853,4.667 -57.7438,2.00614 C 308.3819,286.02942 314.59538,201.54828 266.8497,105.51764 259.26007,90.252656 254.74976,38.391156 259.93272,22.594036 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssssss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-5"
|
||||
d="m 245.27799,20.184136 c -16.18864,33.02752 -54.92821,38.49401 -61.68452,32.04878 -7.56831,-7.21981 38.17865,-57.1909599 60.55119,-31.48217 2.08865,2.40013 70.63727,20.24099 51.82058,-7.65192 -12.58672,-18.6579199 -47.69001,0.97044 -50.68725,7.08531 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-3-0"
|
||||
d="m 795.79416,17.208006 c 69.48397,-3.30891 -71.99318,194.184894 -144.48638,178.039774 -18.9783,-4.22668 -0.8864,-103.016384 42.7281,-141.221594 45.5964,-39.94121 81.2483,-35.84146 101.75828,-36.81818 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-9"
|
||||
d="m 644.76278,238.24248 c -7.4326,-145.896664 81.677,-219.317254 162.70124,-221.343234 189.03551,-4.72674 200.73818,218.686044 200.73818,218.686044 6.2124,1.59293 98.6373,77.15338 -19.77727,39.65891 -16.9305,-5.36081 -32.0011,11.3221 -82.394,8.45492 -11.6998,23.16096 -48.9521,60.48948 -83.49208,68.46717 -80.37237,18.56358 -200.18131,-6.1995 -236.81351,-26.29805 -20.1303,-11.04468 37.3603,-54.69665 59.03744,-87.62576 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscscssc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-3"
|
||||
d="m 707.10958,256.23484 c -4.5506,-59.43449 38.9445,-170.552464 113.0356,-235.300684"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-5-6"
|
||||
d="M 906.03093,283.69912 C 748.35878,266.97103 702.49728,258.25151 644.76278,238.24248"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-0"
|
||||
d="m 839.44847,22.359556 c 3.79974,-11.58118 71.55246,-0.42441 105.32676,31.90705 55.2181,52.859064 78.36977,184.859614 61.84477,203.456854 -11.45267,12.88898 -21.57437,23.81728 -38.81417,28.53139 -22.3413,6.10906 -33.8285,4.667 -57.7438,2.00614 -22.1644,-2.46605 -15.9509,-86.94719 -63.69658,-182.97783 -7.58963,-15.264984 -12.09994,-67.126484 -6.91698,-82.923604 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssssss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-5-6"
|
||||
d="m 824.79374,19.949656 c -16.18864,33.02752 -54.92826,38.49401 -61.68456,32.04878 -7.5683,-7.21981 38.17869,-57.1909599 60.55123,-31.48217 2.08865,2.40013 70.63722,20.24099 51.82062,-7.65192 -12.5868,-18.6579199 -47.69005,0.97044 -50.68729,7.08531 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-3-3"
|
||||
d="M 644.76278,238.24248 C 657.78072,118.45146 738.1321,21.336741 824.79374,19.949656"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-3-7"
|
||||
d="M 832.24462,274.4174 C 826.94633,234.42287 817.24711,114.60551 824.79374,19.949656"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</svg>
|
After Width: | Height: | Size: 7.9 KiB |
130
packages/holmes/drawings/lengthratio.svg
Normal file
130
packages/holmes/drawings/lengthratio.svg
Normal file
|
@ -0,0 +1,130 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="1050.3943"
|
||||
height="400.72318"
|
||||
id="svg13134"
|
||||
sodipodi:docname="extraLength.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
id="namedview14"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="0.77663743"
|
||||
inkscape:cx="304.26789"
|
||||
inkscape:cy="379.82998"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg13134" />
|
||||
<metadata
|
||||
id="metadata3096">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs13136" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-3"
|
||||
d="M 216.27841,17.442486 C 285.76235,14.133576 144.28526,211.62738 71.792027,195.48226 52.813787,191.25558 70.905657,92.465876 114.52017,54.260666 c 45.59634,-39.94121 81.24825,-35.84146 101.75824,-36.81818 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674"
|
||||
d="M 65.247037,228.47696 C 57.814397,82.580296 146.92406,19.159706 227.94827,17.133726 416.98378,12.406986 428.6865,225.81977 428.6865,225.81977 c 6.21243,1.59293 98.63729,77.15338 -19.77735,39.65891 -16.93044,-5.36081 -32.00111,11.3221 -82.39397,8.45492 -11.69981,23.16096 -48.95213,60.48948 -83.49208,68.46717 C 162.65073,360.96435 42.841827,336.20127 6.2096769,316.10272 -13.920643,305.05804 43.569907,261.40607 65.247037,228.47696 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscscssc" />
|
||||
<g
|
||||
transform="matrix(0.991716,0,0,0.991716,199.88965,512.89649)"
|
||||
style="fill:#212121;stroke:#545454"
|
||||
id="g4303" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67"
|
||||
d="M 127.59385,246.1685 C 123.04328,186.73401 166.53834,85.916856 240.62943,21.168636"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-5"
|
||||
d="M 326.51518,273.9336 C 168.84303,257.20551 122.98154,248.48599 65.247037,228.47696"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6"
|
||||
d="m 259.93272,22.594036 c 3.79974,-11.58118 71.55244,-0.42441 105.32678,31.90705 55.21804,52.859064 78.36975,174.859614 61.84481,193.456854 -11.45276,12.88898 -21.57439,23.81728 -38.81422,28.53139 -22.34126,6.10906 -33.82853,4.667 -57.7438,2.00614 C 308.3819,276.02942 314.59538,201.54828 266.8497,105.51764 259.26007,90.252656 254.74976,38.391156 259.93272,22.594036 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssssss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-5"
|
||||
d="m 245.27799,20.184136 c -16.18864,33.02752 -54.92821,38.49401 -61.68452,32.04878 -7.56831,-7.21981 38.17865,-57.1909599 60.55119,-31.48217 2.08865,2.40013 70.63727,20.24099 51.82058,-7.65192 -12.58672,-18.6579199 -47.69001,0.97044 -50.68725,7.08531 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-3-0"
|
||||
d="m 795.79416,17.208006 c 69.48397,-3.30891 -71.99318,194.184894 -144.48638,178.039774 -18.9783,-4.22668 -0.8864,-103.016384 42.7281,-141.221594 45.5964,-39.94121 81.2483,-35.84146 101.75828,-36.81818 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-9"
|
||||
d="M 644.76278,278.24248 C 626.25969,132.34582 704.02362,18.925226 807.46402,16.899246 996.52236,13.196356 1008.2022,275.58529 1008.2022,275.58529 c 6.2124,1.59293 98.6373,77.15338 -19.77727,39.65891 -16.9305,-5.36081 -32.0011,11.3221 -82.394,8.45492 -11.6998,23.16096 -48.9521,60.48948 -83.49208,68.46717 -80.37237,18.56358 -200.18131,-6.1995 -236.81351,-26.29805 -20.1303,-11.04468 37.3603,-54.69665 59.03744,-87.62576 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscscssc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-3"
|
||||
d="M 721.2732,301.30092 C 716.7226,239.83137 746.05408,69.292871 820.14518,20.934156"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-5-6"
|
||||
d="M 906.03093,323.69912 C 748.35878,306.97103 702.49728,298.25151 644.76278,278.24248"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-0"
|
||||
d="m 839.44847,22.359556 c 3.79974,-11.58118 71.55246,-0.42441 105.32676,31.90705 55.2181,52.859064 78.36977,226.859614 61.84477,245.456854 -11.45267,12.88898 -21.57437,23.81728 -38.81417,28.53139 -22.3413,6.10906 -33.8285,4.667 -57.7438,2.00614 -22.1644,-2.46605 -15.9509,-128.94719 -63.69658,-224.97783 -7.58963,-15.264984 -12.09994,-67.126484 -6.91698,-82.923604 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssssss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-5-6"
|
||||
d="m 824.79374,19.949656 c -16.18864,33.02752 -54.92826,38.49401 -61.68456,32.04878 -7.5683,-7.21981 38.17869,-57.1909599 60.55123,-31.48217 2.08865,2.40013 70.63722,20.24099 51.82062,-7.65192 -12.5868,-18.6579199 -47.69005,0.97044 -50.68729,7.08531 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
</svg>
|
After Width: | Height: | Size: 7.3 KiB |
94
packages/holmes/drawings/linedrawing.svg
Normal file
94
packages/holmes/drawings/linedrawing.svg
Normal file
|
@ -0,0 +1,94 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="470.87854"
|
||||
height="360.72318"
|
||||
id="svg13134"
|
||||
sodipodi:docname="linedrawing.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
id="namedview14"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="1.3374514"
|
||||
inkscape:cx="368.64888"
|
||||
inkscape:cy="165.45686"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg13134" />
|
||||
<metadata
|
||||
id="metadata3096">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs13136" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6-3"
|
||||
d="M 216.27841,17.208006 C 285.76235,13.899096 144.28526,211.3929 71.792027,195.24778 52.813787,191.0211 70.905657,92.231396 114.52017,54.026186 c 45.59634,-39.94121 81.24825,-35.84146 101.75824,-36.81818 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssss" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674"
|
||||
d="M 65.247037,238.24248 C 57.814397,92.345816 146.92406,18.925226 227.94827,16.899246 416.98378,12.172506 428.6865,235.58529 428.6865,235.58529 c 6.21243,1.59293 98.63729,77.15338 -19.77735,39.65891 -16.93044,-5.36081 -32.00111,11.3221 -82.39397,8.45492 -11.69981,23.16096 -48.95213,60.48948 -83.49208,68.46717 C 162.65073,370.72987 42.841827,345.96679 6.2096769,325.86824 -13.920643,314.82356 43.569907,271.17159 65.247037,238.24248 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscscssc" />
|
||||
<g
|
||||
transform="matrix(0.991716,0,0,0.991716,199.88965,512.66201)"
|
||||
style="fill:#212121;stroke:#545454"
|
||||
id="g4303" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67"
|
||||
d="M 127.59385,256.23484 C 123.04328,196.80035 166.53834,85.682376 240.62943,20.934156"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-5"
|
||||
d="M 326.51518,283.69912 C 168.84303,266.97103 122.98154,258.25151 65.247037,238.24248"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#212121;fill-opacity:0.98086123;stroke:#545454;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-6"
|
||||
d="m 259.93272,22.359556 c 3.79974,-11.58118 71.55244,-0.42441 105.32678,31.90705 55.21804,52.859064 78.36975,184.859614 61.84481,203.456854 -11.45276,12.88898 -21.57439,23.81728 -38.81422,28.53139 -22.34126,6.10906 -33.82853,4.667 -57.7438,2.00614 C 308.3819,285.79494 314.59538,201.3138 266.8497,105.28316 259.26007,90.018176 254.74976,38.156676 259.93272,22.359556 Z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssssss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4674-67-5"
|
||||
d="m 245.27799,19.949656 c -16.18864,33.02752 -54.92821,38.49401 -61.68452,32.04878 -7.56831,-7.21981 38.17865,-57.1909598 60.55119,-31.48217 2.08865,2.40013 70.63727,20.24099 51.82058,-7.65192 -12.58672,-18.6579198 -47.69001,0.97044 -50.68725,7.08531 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssss" />
|
||||
</svg>
|
After Width: | Height: | Size: 4.5 KiB |
96
packages/holmes/example/README.md
Normal file
96
packages/holmes/example/README.md
Normal file
|
@ -0,0 +1,96 @@
|
|||
<p align="center">
|
||||
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
|
||||
<br>
|
||||
<a href="https://freesewing.org/">FreeSewing v2</a>
|
||||
</p>
|
||||
<p align="center">A JavaScript library for made-to-measure sewing patterns</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://gitter.im/freesewing/freesewing"
|
||||
title="Chat with us on Gitter"
|
||||
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Chat%20with%20us-CA0547.svg?logo=gitter&logoColor=white&logoWidth=15"
|
||||
alt="Chat with us on Gitter"/>
|
||||
</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>
|
||||
|
||||
# holmes example
|
||||
|
||||
This project was bootstrapped with [Create Freesewing Pattern](https://en.freesewing.dev/create-freesewing-pattern):
|
||||
|
||||
```js
|
||||
npm init freesewing-pattern
|
||||
```
|
||||
|
||||
This example folder is part of the local development environment.
|
||||
It is **not** part of the pattern's source code.
|
||||
|
||||
To run this example, follow these steps:
|
||||
|
||||
- In the folder above this one, run: `yarn start` (or `npm start`)
|
||||
- Then, in new terminal, run the same command in this folder: `yarn start` (or `npm start`)
|
||||
|
||||
This will spin up the development environment, similar to [our online demo](https://holmes.freesewing.dev/).
|
||||
|
||||
## About FreeSewing 🤔
|
||||
|
||||
Where the world of makers and developers collide, that's where you'll find FreeSewing.
|
||||
|
||||
Our [core library](https://freesewing.dev/en/freesewing) is a *batteries-included* toolbox
|
||||
for parametric design of sewing patterns. It's a modular system (check our list
|
||||
of [plugins](https://freesewing.dev/en/plugins) and getting started is as simple as:
|
||||
|
||||
```bash
|
||||
npm init freesewing-pattern
|
||||
```
|
||||
|
||||
The [getting started] section on [freesewing.dev](https://freesewing.dev/) is a good
|
||||
entrypoint to our documentation, but you'll find a lot more there, including
|
||||
our [API documentation](https://freesewing.dev/en/freesewing/api),
|
||||
as well as [examples](https://freesewing.dev/en/freesewing/examples),
|
||||
and [best practices](https://freesewing.dev/en/do).
|
||||
|
||||
If you're a maker, checkout [freesewing.org](https://freesewing/) where you can generate
|
||||
our sewing patterns adapted to your measurements.
|
||||
|
||||
## Support FreeSewing: Become a patron 🥰
|
||||
|
||||
FreeSewing is an open source project run by a community,
|
||||
and financially supported by our patrons.
|
||||
|
||||
If you feel what we do is worthwhile, you too
|
||||
should [become a patron](https://freesewing.org/patrons/join).
|
||||
|
||||
## Links 👩💻
|
||||
|
||||
- 💻 Makers website: [freesewing.org](https://freesewing.org)
|
||||
- 💻 Developers website: [freesewing.dev](https://freesewing.org)
|
||||
- 💬 Chat: [gitter.im/freesewing](https://gitter.im/freesewing/freesewing)
|
||||
- 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
|
||||
- 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
|
||||
|
||||
## 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 🤯
|
||||
|
||||
Our [chatroom on Gitter](https://gitter.im) is the best place to ask questions,
|
||||
share your feedback, or just hang out.
|
||||
|
||||
If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new).
|
||||
|
48
packages/holmes/example/package.json
Normal file
48
packages/holmes/example/package.json
Normal file
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"name": "holmes-example",
|
||||
"homepage": "https://AlfaLyr.github.io/holmes",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@freesewing/components": "latest",
|
||||
"@freesewing/core": "latest",
|
||||
"@freesewing/css-theme": "latest",
|
||||
"@freesewing/i18n": "latest",
|
||||
"@freesewing/models": "latest",
|
||||
"@freesewing/mui-theme": "latest",
|
||||
"@freesewing/pattern-info": "latest",
|
||||
"@freesewing/plugin-bundle": "latest",
|
||||
"@freesewing/plugin-theme": "latest",
|
||||
"@freesewing/plugin-i18n": "latest",
|
||||
"@freesewing/plugin-svgattr": "latest",
|
||||
"@freesewing/utils": "latest",
|
||||
"@material-ui/core": "^4.4.0",
|
||||
"@material-ui/icons": "^4.2.1",
|
||||
"@material-ui/lab": "^v4.0.0-alpha.25",
|
||||
"pattern": "file:..",
|
||||
"prismjs": "1.17.1",
|
||||
"react": "^16.9",
|
||||
"react-dom": "^16.9",
|
||||
"react-scripts": "^3.1.1",
|
||||
"file-saver": "^2.0.2",
|
||||
"typeface-roboto-condensed": "latest"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-scripts start",
|
||||
"build": "react-scripts build",
|
||||
"test": "react-scripts test",
|
||||
"eject": "react-scripts eject"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": "react-app"
|
||||
},
|
||||
"browserslist": [
|
||||
">0.2%",
|
||||
"not dead",
|
||||
"not ie <= 11",
|
||||
"not op_mini all"
|
||||
],
|
||||
"devDependencies": {
|
||||
"babel-plugin-prismjs": "1.1.1"
|
||||
}
|
||||
}
|
BIN
packages/holmes/example/public/favicon.ico
Normal file
BIN
packages/holmes/example/public/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
40
packages/holmes/example/public/index.html
Normal file
40
packages/holmes/example/public/index.html
Normal file
|
@ -0,0 +1,40 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="theme-color" content="#000000">
|
||||
<!--
|
||||
manifest.json provides metadata used when your web app is added to the
|
||||
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
|
||||
-->
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
|
||||
<!--
|
||||
Notice the use of %PUBLIC_URL% in the tags above.
|
||||
It will be replaced with the URL of the `public` folder during the build.
|
||||
Only files inside the `public` folder can be referenced from the HTML.
|
||||
|
||||
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
||||
work correctly both with client-side routing and a non-root public URL.
|
||||
Learn how to configure a non-root public URL by running `npm run build`.
|
||||
-->
|
||||
<title>holmes</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
You need to enable JavaScript to run this app.
|
||||
</noscript>
|
||||
<div id="root"></div>
|
||||
<!--
|
||||
This HTML file is a template.
|
||||
If you open it directly in the browser, you will see an empty page.
|
||||
|
||||
You can add webfonts, meta tags, or analytics to this file.
|
||||
The build step will place the bundled scripts into the <body> tag.
|
||||
|
||||
To begin the development, run `npm start` or `yarn start`.
|
||||
To create a production bundle, use `npm run build` or `yarn build`.
|
||||
-->
|
||||
</body>
|
||||
</html>
|
15
packages/holmes/example/public/manifest.json
Normal file
15
packages/holmes/example/public/manifest.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"short_name": "holmes",
|
||||
"name": "holmes",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "64x64 32x32 24x24 16x16",
|
||||
"type": "image/x-icon"
|
||||
}
|
||||
],
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"theme_color": "#000000",
|
||||
"background_color": "#ffffff"
|
||||
}
|
22
packages/holmes/example/src/App.js
Normal file
22
packages/holmes/example/src/App.js
Normal file
|
@ -0,0 +1,22 @@
|
|||
import React from 'react'
|
||||
import freesewing from '@freesewing/core'
|
||||
import Workbench from '@freesewing/components/Workbench'
|
||||
import 'typeface-roboto-condensed'
|
||||
import '@freesewing/css-theme'
|
||||
|
||||
import Pattern from 'pattern'
|
||||
|
||||
const App = props => {
|
||||
let instance = new Pattern()
|
||||
let config = instance.config
|
||||
return (
|
||||
<Workbench
|
||||
freesewing={freesewing}
|
||||
Pattern={Pattern}
|
||||
config={config}
|
||||
userLanguage="en"
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
export default App
|
9
packages/holmes/example/src/App.test.js
Normal file
9
packages/holmes/example/src/App.test.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
import React from 'react'
|
||||
import ReactDOM from 'react-dom'
|
||||
import App from './App'
|
||||
|
||||
it('renders without crashing', () => {
|
||||
const div = document.createElement('div')
|
||||
ReactDOM.render(<App />, div)
|
||||
ReactDOM.unmountComponentAtNode(div)
|
||||
})
|
11
packages/holmes/example/src/index.js
Normal file
11
packages/holmes/example/src/index.js
Normal file
|
@ -0,0 +1,11 @@
|
|||
import React from 'react'
|
||||
import ReactDOM from 'react-dom'
|
||||
import App from './App'
|
||||
import * as serviceWorker from './serviceWorker'
|
||||
|
||||
ReactDOM.render(<App />, document.getElementById('root'))
|
||||
|
||||
// If you want your app to work offline and load faster, you can change
|
||||
// unregister() to register() below. Note this comes with some pitfalls.
|
||||
// Learn more about service workers: http://bit.ly/CRA-PWA
|
||||
serviceWorker.unregister()
|
123
packages/holmes/example/src/serviceWorker.js
Normal file
123
packages/holmes/example/src/serviceWorker.js
Normal file
|
@ -0,0 +1,123 @@
|
|||
// In production, we register a service worker to serve assets from local cache.
|
||||
|
||||
// This lets the app load faster on subsequent visits in production, and gives
|
||||
// it offline capabilities. However, it also means that developers (and users)
|
||||
// will only see deployed updates on the "N+1" visit to a page, since previously
|
||||
// cached resources are updated in the background.
|
||||
|
||||
// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.
|
||||
// This link also includes instructions on opting out of this behavior.
|
||||
|
||||
const isLocalhost = Boolean(
|
||||
window.location.hostname === 'localhost' ||
|
||||
// [::1] is the IPv6 localhost address.
|
||||
window.location.hostname === '[::1]' ||
|
||||
// 127.0.0.1/8 is considered localhost for IPv4.
|
||||
window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)
|
||||
)
|
||||
|
||||
export function register(config) {
|
||||
if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
|
||||
// The URL constructor is available in all browsers that support SW.
|
||||
const publicUrl = new URL(process.env.PUBLIC_URL, window.location)
|
||||
if (publicUrl.origin !== window.location.origin) {
|
||||
// Our service worker won't work if PUBLIC_URL is on a different origin
|
||||
// from what our page is served on. This might happen if a CDN is used to
|
||||
// serve assets; see https://github.com/facebook/create-react-app/issues/2374
|
||||
return
|
||||
}
|
||||
|
||||
window.addEventListener('load', () => {
|
||||
const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`
|
||||
|
||||
if (isLocalhost) {
|
||||
// This is running on localhost. Let's check if a service worker still exists or not.
|
||||
checkValidServiceWorker(swUrl, config)
|
||||
|
||||
// Add some additional logging to localhost, pointing developers to the
|
||||
// service worker/PWA documentation.
|
||||
navigator.serviceWorker.ready.then(() => {
|
||||
console.log(
|
||||
'This web app is being served cache-first by a service ' +
|
||||
'worker. To learn more, visit https://goo.gl/SC7cgQ'
|
||||
)
|
||||
})
|
||||
} else {
|
||||
// Is not local host. Just register service worker
|
||||
registerValidSW(swUrl, config)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function registerValidSW(swUrl, config) {
|
||||
navigator.serviceWorker
|
||||
.register(swUrl)
|
||||
.then(registration => {
|
||||
registration.onupdatefound = () => {
|
||||
const installingWorker = registration.installing
|
||||
installingWorker.onstatechange = () => {
|
||||
if (installingWorker.state === 'installed') {
|
||||
if (navigator.serviceWorker.controller) {
|
||||
// At this point, the old content will have been purged and
|
||||
// the fresh content will have been added to the cache.
|
||||
// It's the perfect time to display a "New content is
|
||||
// available; please refresh." message in your web app.
|
||||
console.log('New content is available; please refresh.')
|
||||
|
||||
// Execute callback
|
||||
if (config.onUpdate) {
|
||||
config.onUpdate(registration)
|
||||
}
|
||||
} else {
|
||||
// At this point, everything has been precached.
|
||||
// It's the perfect time to display a
|
||||
// "Content is cached for offline use." message.
|
||||
console.log('Content is cached for offline use.')
|
||||
|
||||
// Execute callback
|
||||
if (config.onSuccess) {
|
||||
config.onSuccess(registration)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error during service worker registration:', error)
|
||||
})
|
||||
}
|
||||
|
||||
function checkValidServiceWorker(swUrl, config) {
|
||||
// Check if the service worker can be found. If it can't reload the page.
|
||||
fetch(swUrl)
|
||||
.then(response => {
|
||||
// Ensure service worker exists, and that we really are getting a JS file.
|
||||
if (
|
||||
response.status === 404 ||
|
||||
response.headers.get('content-type').indexOf('javascript') === -1
|
||||
) {
|
||||
// No service worker found. Probably a different app. Reload the page.
|
||||
navigator.serviceWorker.ready.then(registration => {
|
||||
registration.unregister().then(() => {
|
||||
window.location.reload()
|
||||
})
|
||||
})
|
||||
} else {
|
||||
// Service worker found. Proceed as normal.
|
||||
registerValidSW(swUrl, config)
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
console.log('No internet connection found. App is running in offline mode.')
|
||||
})
|
||||
}
|
||||
|
||||
export function unregister() {
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.ready.then(registration => {
|
||||
registration.unregister()
|
||||
})
|
||||
}
|
||||
}
|
66
packages/holmes/package.json
Normal file
66
packages/holmes/package.json
Normal file
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
"name": "holmes",
|
||||
"version": "0.0.1",
|
||||
"description": "Sherlock Holmes hat",
|
||||
"author": "AlfaLyr",
|
||||
"license": "MIT",
|
||||
"repository": "AlfaLyr/holmes",
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.es.js",
|
||||
"jsnext:main": "dist/index.es.js",
|
||||
"engines": {
|
||||
"node": ">=8",
|
||||
"npm": ">=5"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "cross-env CI=1 react-scripts test --env=jsdom",
|
||||
"test:watch": "react-scripts test --env=jsdom",
|
||||
"build": "rollup -c",
|
||||
"start": "rollup -c -w",
|
||||
"prepare": "npm run build",
|
||||
"predeploy": "cd example && npm install && npm run build",
|
||||
"deploy": "gh-pages -d example/build"
|
||||
},
|
||||
"devDependencies": {
|
||||
"react": "^16.8",
|
||||
"react-dom": "^16.8",
|
||||
"@babel/plugin-proposal-class-properties": "^7.0.0",
|
||||
"babel-eslint": "10.0.1",
|
||||
"eslint": "^5.16.0",
|
||||
"babel-jest": "24.7.1",
|
||||
"jest": "24.7.1",
|
||||
"@freesewing/core": "latest",
|
||||
"@freesewing/plugin-bundle": "latest",
|
||||
"@freesewing/components": "latest",
|
||||
"@freesewing/css-theme": "latest",
|
||||
"@freesewing/i18n": "latest",
|
||||
"@freesewing/mui-theme": "latest",
|
||||
"@freesewing/patterns": "latest",
|
||||
"@freesewing/plugin-bust": "latest",
|
||||
"@freesewing/plugin-buttons": "latest",
|
||||
"@freesewing/plugin-debug": "latest",
|
||||
"@freesewing/plugin-designer": "latest",
|
||||
"@freesewing/plugin-flip": "latest",
|
||||
"@freesewing/utils": "latest",
|
||||
"@svgr/rollup": "^2.4.1",
|
||||
"cross-env": "^5.1.4",
|
||||
"gh-pages": "^1.2.0",
|
||||
"react-scripts": "^3.0.1",
|
||||
"webpack": "4.29.6",
|
||||
"rollup": "^0.64.1",
|
||||
"rollup-plugin-babel": "^4.0.1",
|
||||
"rollup-plugin-babel-minify": "^7.0.0",
|
||||
"rollup-plugin-commonjs": "^9.1.3",
|
||||
"rollup-plugin-json": "^3.1.0",
|
||||
"rollup-plugin-node-resolve": "^3.3.0",
|
||||
"rollup-plugin-peer-deps-external": "^2.2.0",
|
||||
"rollup-plugin-postcss": "^1.6.2",
|
||||
"rollup-plugin-url": "^1.4.0",
|
||||
"@material-ui/core": "^4.0.1",
|
||||
"@material-ui/icons": "^4.0.1",
|
||||
"@material-ui/lab": "^v4.0.0-alpha.14",
|
||||
"react-intl": "2.8.0",
|
||||
"prop-types": "15.7.2",
|
||||
"file-saver": "^2.0.2"
|
||||
}
|
||||
}
|
47
packages/holmes/rollup.config.js
Normal file
47
packages/holmes/rollup.config.js
Normal file
|
@ -0,0 +1,47 @@
|
|||
import babel from "rollup-plugin-babel";
|
||||
import commonjs from "rollup-plugin-commonjs";
|
||||
import external from "rollup-plugin-peer-deps-external";
|
||||
import postcss from "rollup-plugin-postcss";
|
||||
import json from "rollup-plugin-json";
|
||||
import resolve from "rollup-plugin-node-resolve";
|
||||
import url from "rollup-plugin-url";
|
||||
import svgr from "@svgr/rollup";
|
||||
import minify from "rollup-plugin-babel-minify";
|
||||
import { name, version, description, author, license } from "./package.json";
|
||||
|
||||
import pkg from "./package.json";
|
||||
|
||||
export default {
|
||||
input: "src/index.js",
|
||||
output: [
|
||||
{
|
||||
file: pkg.main,
|
||||
format: "cjs",
|
||||
sourcemap: true
|
||||
},
|
||||
{
|
||||
file: pkg.module,
|
||||
format: "es",
|
||||
sourcemap: true
|
||||
}
|
||||
],
|
||||
plugins: [
|
||||
external(),
|
||||
postcss({
|
||||
modules: true
|
||||
}),
|
||||
url({ exclude: ["**/*.svg"] }),
|
||||
svgr(),
|
||||
babel({
|
||||
exclude: "node_modules/**"
|
||||
}),
|
||||
resolve({ browser: true }),
|
||||
json(),
|
||||
commonjs(),
|
||||
minify({
|
||||
comments: false,
|
||||
sourceMap: true,
|
||||
banner: `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */`
|
||||
})
|
||||
]
|
||||
};
|
72
packages/holmes/src/brim.js
Normal file
72
packages/holmes/src/brim.js
Normal file
|
@ -0,0 +1,72 @@
|
|||
export default function(part) {
|
||||
let {
|
||||
Point,
|
||||
points,
|
||||
Path,
|
||||
paths,
|
||||
measurements,
|
||||
options,
|
||||
complete,
|
||||
sa,
|
||||
snippets,
|
||||
Snippet,
|
||||
paperless,
|
||||
macro
|
||||
} = part.shorthand();
|
||||
|
||||
// Design pattern here
|
||||
|
||||
let headRadius = measurements.headCircumference/2/Math.PI
|
||||
let brimRadius = headRadius/Math.sin(options.brimAngle*Math.PI/180)
|
||||
let sectorAngle = Math.PI/3
|
||||
let brimSectorAngle = sectorAngle * headRadius / brimRadius
|
||||
let cpDistance = 4/3*brimRadius*(1-Math.cos(brimSectorAngle/2))/Math.sin(brimSectorAngle/2)
|
||||
|
||||
points.origin = new Point(0, 0)
|
||||
points.in1 = new Point(0, 0)
|
||||
points.in2 = points.in1.shift(90/Math.PI*brimSectorAngle, 2*brimRadius*Math.sin(brimSectorAngle/2))
|
||||
points.in1C = points.in1.shift(0, cpDistance)
|
||||
points.in2C = points.in2.shift(180+180/Math.PI*brimSectorAngle, cpDistance)
|
||||
points.in1CFlipped = points.in1C.flipX()
|
||||
points.in2Flipped = points.in2.flipX()
|
||||
points.in2CFlipped = points.in2C.flipX()
|
||||
|
||||
points.ex1 = points.in1.shift(-90, options.brimWidth)
|
||||
points.ex1C = points.ex1.shift(0, 0.5*points.in2.x)
|
||||
points.ex2C = points.in2.shift(-90, (points.ex1.y-points.in2.y)*(2/(1+Math.exp(-options.brimWidth/15))-1))
|
||||
points.ex1CFlipped = points.ex1C.flipX()
|
||||
points.ex2CFlipped = points.ex2C.flipX()
|
||||
|
||||
paths.seam = new Path()
|
||||
.move(points.in2Flipped)
|
||||
.curve(points.in2CFlipped, points.in1CFlipped, points.in1)
|
||||
.curve(points.in1C, points.in2C, points.in2)
|
||||
.curve(points.ex2C, points.ex1C, points.ex1)
|
||||
.curve(points.ex1CFlipped, points.ex2CFlipped, points.in2Flipped)
|
||||
.close()
|
||||
|
||||
// Complete?
|
||||
if (complete) {
|
||||
macro('grainline', {from: points.in1, to: points.ex1})
|
||||
macro('title', { at: points.ex1.shift(45, 20), nr: 2, title: 'brim', scale: 0.4})
|
||||
|
||||
if (sa) {
|
||||
paths.sa = paths.seam.offset(sa * -1).attr('class', 'fabric sa')
|
||||
}
|
||||
|
||||
// Paperless?
|
||||
if (paperless) {
|
||||
macro('hd', {
|
||||
from: points.in2Flipped,
|
||||
to: points.in2,
|
||||
y: points.ex1.y + 15 + sa
|
||||
})
|
||||
macro('vd', {
|
||||
from: points.ex1,
|
||||
to: points.in2Flipped,
|
||||
x: points.in2Flipped.x - 15 - sa
|
||||
})
|
||||
}
|
||||
}
|
||||
return part;
|
||||
}
|
62
packages/holmes/src/ear.js
Normal file
62
packages/holmes/src/ear.js
Normal file
|
@ -0,0 +1,62 @@
|
|||
export default function(part) {
|
||||
let {
|
||||
Point,
|
||||
points,
|
||||
Path,
|
||||
paths,
|
||||
measurements,
|
||||
options,
|
||||
complete,
|
||||
sa,
|
||||
snippets,
|
||||
Snippet,
|
||||
paperless,
|
||||
macro
|
||||
} = part.shorthand();
|
||||
|
||||
// Design pattern here
|
||||
|
||||
points.top = new Point(0, 0)
|
||||
points.bottom = new Point(measurements.headCircumference/12, options.lengthRatio*measurements.headCircumference/2)
|
||||
points.topC = points.top.shift(0, points.bottom.x)
|
||||
points.bottomC = points.bottom.shift(90, points.bottom.y-points.bottom.x)
|
||||
points.topCFlipped = points.topC.flipX()
|
||||
points.bottomFlipped = points.bottom.flipX()
|
||||
points.bottomCFlipped = points.bottomC.flipX()
|
||||
|
||||
paths.seam = new Path()
|
||||
.move(points.top)
|
||||
.curve(points.topCFlipped, points.bottomCFlipped, points.bottomFlipped)
|
||||
.line(points.bottom)
|
||||
.curve(points.bottomC, points.topC, points.top)
|
||||
.close()
|
||||
|
||||
// Complete?
|
||||
if (complete) {
|
||||
macro('grainline', {from: points.top, to: new Point(0, points.bottom.y)})
|
||||
points.logo = new Point(-0.5*points.bottom.x, 0.75*points.bottom.y)
|
||||
snippets.logo = new Snippet("logo", points.logo)
|
||||
.attr("data-scale", 0.7);
|
||||
points.title = new Point(0.3*points.bottom.x, 0.75*points.bottom.y)
|
||||
macro('title', { at: points.title, nr: 3, title: 'ear', scale: 0.5})
|
||||
|
||||
if (sa) {
|
||||
paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
|
||||
}
|
||||
|
||||
// Paperless?
|
||||
if (paperless) {
|
||||
macro('hd', {
|
||||
from: points.bottomFlipped,
|
||||
to: points.bottom,
|
||||
y: points.bottom.y + 15 + sa
|
||||
})
|
||||
macro('vd', {
|
||||
from: points.bottomFlipped,
|
||||
to: points.top,
|
||||
x: points.bottomFlipped.x - 15 - sa
|
||||
})
|
||||
}
|
||||
}
|
||||
return part;
|
||||
}
|
77
packages/holmes/src/gore.js
Normal file
77
packages/holmes/src/gore.js
Normal file
|
@ -0,0 +1,77 @@
|
|||
export default function(part) {
|
||||
let {
|
||||
Point,
|
||||
points,
|
||||
Path,
|
||||
paths,
|
||||
measurements,
|
||||
options,
|
||||
macro,
|
||||
complete,
|
||||
sa,
|
||||
snippets,
|
||||
Snippet,
|
||||
paperless
|
||||
} = part.shorthand();
|
||||
|
||||
// Design pattern here
|
||||
|
||||
//Radius of the head
|
||||
let headRadius = measurements.headCircumference/2/Math.PI
|
||||
|
||||
points.p0 = new Point(0, 0);
|
||||
|
||||
macro("gore", {
|
||||
from: points.p0,
|
||||
radius: headRadius,
|
||||
goreNumber: options.goreNumber,
|
||||
extraLength: (options.lengthRatio-0.5)*measurements.headCircumference/2,
|
||||
prefix: "gore_",
|
||||
render: true
|
||||
});
|
||||
|
||||
// Complete?
|
||||
if (complete) {
|
||||
points.title = new Point(points.gore_p1.x/10, points.gore_p2.y/1.8)
|
||||
macro('title', { at: points.title, nr: 1, title: 'gore', scale: 0.5})
|
||||
|
||||
macro('cutonfold', {
|
||||
from: points.p0,
|
||||
to: points.gore_p1.shift(180, 20),
|
||||
offset: -points.gore_p2.y/6,
|
||||
grainline: true
|
||||
})
|
||||
|
||||
if (sa) {
|
||||
paths.saBase = new Path()
|
||||
.move(points.gore_p1)
|
||||
.curve(points.gore_Cp1, points.gore_Cp2, points.gore_p2)
|
||||
.line(points.gore_p3)
|
||||
.line(points.p0)
|
||||
.offset(sa)
|
||||
.setRender(false)
|
||||
paths.sa = new Path()
|
||||
.move(points.gore_p1)
|
||||
.line(points.gore_p1.shift(0, sa))
|
||||
.line(paths.saBase.start())
|
||||
.join(paths.saBase)
|
||||
.line(points.p0)
|
||||
.attr('class', 'fabric sa')
|
||||
}
|
||||
|
||||
// Paperless?
|
||||
if (paperless) {
|
||||
macro('hd', {
|
||||
from: points.p0,
|
||||
to: points.gore_p1,
|
||||
y: -points.p0.x + 15
|
||||
})
|
||||
macro('vd', {
|
||||
from: points.p0,
|
||||
to: points.gore_p3,
|
||||
x: points.p0.x - 15 - sa
|
||||
})
|
||||
}
|
||||
}
|
||||
return part;
|
||||
}
|
17
packages/holmes/src/index.js
Normal file
17
packages/holmes/src/index.js
Normal file
|
@ -0,0 +1,17 @@
|
|||
import freesewing from '@freesewing/core'
|
||||
import plugins from '@freesewing/plugin-bundle'
|
||||
import gore from './plugin-gore'
|
||||
import config from '../config'
|
||||
import draftGore from './gore'
|
||||
import draftBrim from './brim'
|
||||
import draftEar from './ear'
|
||||
|
||||
// Create new design
|
||||
const Pattern = new freesewing.Design(config, [plugins,gore])
|
||||
|
||||
// Attach the draft methods to the prototype
|
||||
Pattern.prototype.draftGore = draftGore
|
||||
Pattern.prototype.draftBrim = draftBrim
|
||||
Pattern.prototype.draftEar = draftEar
|
||||
|
||||
export default Pattern
|
63
packages/holmes/src/plugin-gore.js
Normal file
63
packages/holmes/src/plugin-gore.js
Normal file
|
@ -0,0 +1,63 @@
|
|||
import { name, version } from '../package.json'
|
||||
|
||||
export default {
|
||||
name: name,
|
||||
version: version,
|
||||
hooks: {
|
||||
preRender: function(svg) {
|
||||
if (svg.attributes.get('freesewing:plugin-gore') === false)
|
||||
svg.attributes.set('freesewing:plugin-gore', version)
|
||||
}
|
||||
},
|
||||
macros: {
|
||||
gore: function(so) {
|
||||
let from = so.from
|
||||
let goreNumber = so.goreNumber //number of gores for the complete sphere
|
||||
let radius = so.radius //radius of the sphere
|
||||
let prefix = so.prefix
|
||||
let extraLength = so.extraLength //the length of the straight section after a complete semisphere
|
||||
|
||||
this.points[prefix + 'p1'] = from.shift(0, radius*Math.PI/2 + extraLength)
|
||||
this.points[prefix + 'Cp1'] = this.points[prefix + 'p1'].shift(180-180/goreNumber, radius/2/Math.cos(Math.PI/goreNumber))
|
||||
this.points[prefix + 'p3'] = from.shift(90, radius*Math.PI/goreNumber)
|
||||
this.points[prefix + 'p2'] = this.points[prefix + 'p3'].shift(0, extraLength)
|
||||
this.points[prefix + 'Cp2'] = this.points[prefix + 'p2'].shift(0, radius*(Math.PI-2)/2)
|
||||
|
||||
if (extraLength < 0){
|
||||
//top curve used to calculate the new points if extraLength < 0
|
||||
this.paths.auxiliaryPath = new this.Path()
|
||||
.move(this.points[prefix + "p1"])
|
||||
.curve(
|
||||
this.points[prefix + 'Cp1'],
|
||||
this.points[prefix + 'Cp2'],
|
||||
this.points[prefix + 'p2']
|
||||
)
|
||||
.setRender(false)
|
||||
|
||||
this.points[prefix + 'p2'] = this.paths.auxiliaryPath.intersectsX(0)[0] //the new point p2 is the one in which the auxiliary curve intersects x=0
|
||||
this.paths.auxiliaryPath = this.paths.auxiliaryPath.split(this.points[prefix + 'p2'])[0] //the auxiliary curve is split
|
||||
this.points[prefix + 'Cp1'] = this.paths.auxiliaryPath.ops[1].cp1 //the new control points are those of the new curve
|
||||
this.points[prefix + 'Cp2'] = this.paths.auxiliaryPath.ops[1].cp2
|
||||
this.points[prefix + 'p3'] = this.points[prefix + 'p2'].clone()
|
||||
}
|
||||
|
||||
//the seam path is generated
|
||||
this.paths[prefix + 'seam'] = new this.Path()
|
||||
.move(from)
|
||||
.line(this.points[prefix + 'p1'])
|
||||
.curve(
|
||||
this.points[prefix + 'Cp1'],
|
||||
this.points[prefix + 'Cp2'],
|
||||
this.points[prefix + 'p2']
|
||||
)
|
||||
.line(this.points[prefix + "p3"])
|
||||
.line(from)
|
||||
.close()
|
||||
.attr('class', so.class ? so.class : '')
|
||||
|
||||
if (typeof so.render !== 'undefined' && so.render)
|
||||
this.paths[prefix + 'seam'].render = true
|
||||
else this.paths[prefix + 'seam'].render = false
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue