diff --git a/designs/plugintest/src/plugin-bartack.mjs b/designs/plugintest/src/plugin-bartack.mjs
index 06e81ccd75d..09c1567574b 100644
--- a/designs/plugintest/src/plugin-bartack.mjs
+++ b/designs/plugintest/src/plugin-bartack.mjs
@@ -1,4 +1,4 @@
-import { bartackPlugin } from '@freesewing/plugin-bartack'
+import { bartackPlugin } from '@freesewing/plugin-annotations'
import { base } from './base.mjs'
const bartackOptions = (options) => ({
diff --git a/designs/plugintest/src/plugin-buttons.mjs b/designs/plugintest/src/plugin-buttons.mjs
index 67248cb0e26..a68ae485e7d 100644
--- a/designs/plugintest/src/plugin-buttons.mjs
+++ b/designs/plugintest/src/plugin-buttons.mjs
@@ -1,4 +1,4 @@
-import { buttonsPlugin } from '@freesewing/plugin-buttons'
+import { buttonsPlugin } from '@freesewing/plugin-annotations'
import { base } from './base.mjs'
const addThese = [
diff --git a/designs/plugintest/src/plugin-cutonfold.mjs b/designs/plugintest/src/plugin-cutonfold.mjs
index 2c9f2ce5886..3e313d456f9 100644
--- a/designs/plugintest/src/plugin-cutonfold.mjs
+++ b/designs/plugintest/src/plugin-cutonfold.mjs
@@ -1,4 +1,4 @@
-import { cutonfoldPlugin } from '@freesewing/plugin-cutonfold'
+import { cutonfoldPlugin } from '@freesewing/plugin-annotations'
import { base } from './base.mjs'
const pluginCutonfold = ({ points, Point, paths, Path, options, macro, part }) => {
diff --git a/designs/plugintest/src/plugin-notches.mjs b/designs/plugintest/src/plugin-notches.mjs
index 57dba1be926..f01d6f6d26e 100644
--- a/designs/plugintest/src/plugin-notches.mjs
+++ b/designs/plugintest/src/plugin-notches.mjs
@@ -1,4 +1,4 @@
-import { notchesPlugin } from '@freesewing/plugin-notches'
+import { notchesPlugin } from '@freesewing/plugin-annotations'
const addThese = ['notch', 'bnotch']
diff --git a/plugins/plugin-annotations/README.md b/plugins/plugin-annotations/README.md
index 0fb1c6a8632..2fe443e8f7b 100644
--- a/plugins/plugin-annotations/README.md
+++ b/plugins/plugin-annotations/README.md
@@ -22,7 +22,7 @@


Kristin Ruben
π»
 Loudepeuter π |
 Lucian π |
+  MA-TATAS π |
 Marcus π |
-  Martin Tribo π |
+  Martin Tribo π |
 Nadege Michel β οΈ π |
 Natalia π» π¨ π |
 Nathan Yergler π |
 Nick Dower π π» π |
 Nikhil Chelliah π |
 OysteinHoiby π» |
-  Patrick Forringer π |
+  Patrick Forringer π |
 Paul π π π |
 Phillip Thelen π» |
 Pixieish π |
 Prof. dr. Sorcha NΓ Dhubhghaill π |
 Quentin FELIX π» π¨ |
 Rik Hekker π |
-  Sam Livingston-Gray π |
+  Sam Livingston-Gray π |
 Sanne π» π |
 Sara Latorre π |
 SeaZeeZee π π» |
 SimonbJohnson π |
 SirCharlotte π |
 Slylele π π |
-  Soazillon π |
+  Soazillon π |
 SoneaTheBest π |
 Stefan Sydow π π π» |
 TrΓona π |
 Unmutual π |
 Wouter van Wageningen π» π¨ π§ |
 amysews π |
-  anna-puk π» |
+  anna-puk π» |
 beautifulsummermoon π |
 berce π |
 biou π» |
 bobgeorgethe3rd π» π π¨ |
 brmlyklr π |
 chri5b π» β οΈ |
-  dingcycle π |
+  dingcycle π |
 drowned-in-books π¬ |
 econo202 π |
 ericamattos π |
 fightingrabbit π» |
 gaylyndie π |
 grimlokason π» |
-  hellgy π¨ |
+  hellgy π¨ |
 jackseye π |
 marckiesel π |
 mesil π |
 starfetch π» π π π¨ |
 timorl π» |
 ttimearl π |
-  tuesgloomsday π |
+  tuesgloomsday π |
 valadaptive π» |
 viocky π |
 woolishboy π» |
diff --git a/plugins/plugin-annotations/src/index.mjs b/plugins/plugin-annotations/src/index.mjs
index 964a29938c0..804201eabba 100644
--- a/plugins/plugin-annotations/src/index.mjs
+++ b/plugins/plugin-annotations/src/index.mjs
@@ -4,9 +4,7 @@ import { crossbox } from './crossbox.mjs'
import { cutonfold } from './cutonfold.mjs'
import { grainline } from './grainline.mjs'
import { logo } from './logo.mjs'
-import { scalebox } from './scalebox.mjs'
-// import { miniscale } from './scalebox.mjs'
-import { miniscale } from './miniscale.mjs'
+import { scalebox, scalebox2 } from './scalebox.mjs'
import { notches } from './notches.mjs'
import { pleat } from './pleat.mjs'
import { sewtogether } from './sewtogether.mjs'
@@ -27,8 +25,6 @@ export const pluginPleat = pleat
export const scaleboxPlugin = scalebox
export const pluginScalebox = scalebox
-export const miniscalePlugin = miniscale
-export const pluginMiniscale = miniscale
export const sewtogetherPlugin = sewtogether
export const pluginSewtogether = sewtogether
diff --git a/plugins/plugin-annotations/src/miniscale.mjs b/plugins/plugin-annotations/src/miniscale.mjs
deleted file mode 100644
index 18d1a411c31..00000000000
--- a/plugins/plugin-annotations/src/miniscale.mjs
+++ /dev/null
@@ -1,104 +0,0 @@
-import { name, version } from '../data.mjs'
-
-export const miniscale = {
- name: 'miniscale',
- version,
- macros: {
- miniscale(so, { store, points, paths, scale, Point, Path }) {
- // Passing `false` will remove the miniscale
- if (so === false) {
- for (const id of [
- '__miniscaleMetricTopLeft',
- '__miniscaleMetricTopRight',
- '__miniscaleMetricBottomRight',
- '__miniscaleMetricBottomLeft',
- '__miniscaleImperialTopLeft',
- '__miniscaleImperialTopRight',
- '__miniscaleImperialBottomRight',
- '__miniscaleImperialBottomLeft',
- '__miniscaleMetric',
- '__miniscaleImperial',
- ])
- delete points[id]
- for (const id of ['__miniscaleMetric', '__miniscaleImperial']) delete paths[id]
- return true
- }
-
- // Convert scale to a value between 0 and 5, inclusive.
- const scaleIndex = Math.ceil(6 * Math.max(0.1, Math.min(1, scale))) - 1
-
- console.log({ MSat: so.at })
-
- // Metric size in mm / display value and imperial size in mm / display value for each scale index.
- const sizes = [
- [10, '1cm', 25.4 * 0.375, 'β
β³'],
- [13, '1.3cm', 25.4 * 0.5, 'Β½β³'],
- [16, '1.6cm', 25.4 * 0.625, 'β
β³'],
- [19, '1.9cm', 25.4 * 0.75, 'ΒΎβ³'],
- [22, '2.2cm', 25.4 * 0.875, 'β
β³'],
- [25, '2.5cm', 25.4 * 1, '1β³'],
- ]
- const m = sizes[scaleIndex][0] / 2
- const i = sizes[scaleIndex][2] / 2
- const metricDisplaySize = sizes[scaleIndex][1]
- const imperialDisplaySize = sizes[scaleIndex][3]
- // Box points
- points.__miniscaleMetricTopLeft = new Point(so.at.x - m, so.at.y - m)
- points.__miniscaleMetricTopRight = new Point(so.at.x + m, so.at.y - m)
- points.__miniscaleMetricBottomLeft = new Point(so.at.x - m, so.at.y + m)
- points.__miniscaleMetricBottomRight = new Point(so.at.x + m, so.at.y + m)
- points.__miniscaleImperialTopLeft = new Point(so.at.x - i, so.at.y - i)
- points.__miniscaleImperialTopRight = new Point(so.at.x + i, so.at.y - i)
- points.__miniscaleImperialBottomLeft = new Point(so.at.x - i, so.at.y + i)
- points.__miniscaleImperialBottomRight = new Point(so.at.x + i, so.at.y + i)
- // Text anchor points
- points.__miniscaleMetric = new Point(so.at.x, so.at.y - 2 * scale)
- points.__miniscaleImperial = new Point(so.at.x, so.at.y + 8 * scale)
- // Rotation
- if (so.rotate) {
- so.rotate = Number(so.rotate)
- let toRotate = [
- '__miniscaleMetricTopLeft',
- '__miniscaleMetricTopRight',
- '__miniscaleMetricBottomLeft',
- '__miniscaleMetricBottomRight',
- '__miniscaleImperialTopLeft',
- '__miniscaleImperialTopRight',
- '__miniscaleImperialBottomLeft',
- '__miniscaleImperialBottomRight',
- '__miniscaleMetric',
- '__miniscaleImperial',
- ]
- for (const pid of toRotate) points[pid] = points[pid].rotate(so.rotate, so.at)
- for (const pid of toRotate.slice(8)) {
- points[pid].attributes.set(
- 'data-text-transform',
- `rotate(${so.rotate * -1}, ${points[pid].x}, ${points[pid].y})`
- )
- }
- }
- // Paths
- paths.__miniscaleImperial = new Path()
- .attr('class', 'scalebox imperial fill-current')
- .move(points.__miniscaleImperialTopLeft)
- .line(points.__miniscaleImperialBottomLeft)
- .line(points.__miniscaleImperialBottomRight)
- .line(points.__miniscaleImperialTopRight)
- .close()
- paths.__miniscaleMetric = new Path()
- .attr('class', 'scalebox metric fill-bg')
- .move(points.__miniscaleMetricTopLeft)
- .line(points.__miniscaleMetricBottomLeft)
- .line(points.__miniscaleMetricBottomRight)
- .line(points.__miniscaleMetricTopRight)
- .close()
- // Text
- points.__miniscaleMetric = points.__miniscaleMetric
- .attr('data-text', `${metricDisplaySize} x ${metricDisplaySize}`)
- .attr('data-text-class', 'text-xs center')
- points.__miniscaleImperial = points.__miniscaleImperial
- .attr('data-text', `${imperialDisplaySize} x ${imperialDisplaySize}`)
- .attr('data-text-class', 'text-xs center ')
- },
- },
-}
diff --git a/plugins/plugin-annotations/src/scalebox.mjs b/plugins/plugin-annotations/src/scalebox.mjs
index 5bbc60a3085..48c4adbd394 100644
--- a/plugins/plugin-annotations/src/scalebox.mjs
+++ b/plugins/plugin-annotations/src/scalebox.mjs
@@ -50,8 +50,6 @@ export const scalebox = {
const metricDisplayWidth = metricSizes[scaleIndex][2]
const metricDisplayHeight = metricSizes[scaleIndex][3]
- console.log({ SBat: so.at })
-
// Imperial width and height in mm and display width and heigth for each scale index.
const imperialSizes = [
[25.4 * 0.5, 25.4 * 0.25, 'Β½β³', 'ΒΌβ³'],
@@ -191,5 +189,99 @@ export const scalebox = {
.attr('data-text', `${imperialDisplayHeight}`)
.attr('data-text-class', 'text-xs center ')
},
+ miniscale(so, { store, points, paths, scale, Point, Path }) {
+ // Passing `false` will remove the miniscale
+ if (so === false) {
+ for (const id of [
+ '__miniscaleMetricTopLeft',
+ '__miniscaleMetricTopRight',
+ '__miniscaleMetricBottomRight',
+ '__miniscaleMetricBottomLeft',
+ '__miniscaleImperialTopLeft',
+ '__miniscaleImperialTopRight',
+ '__miniscaleImperialBottomRight',
+ '__miniscaleImperialBottomLeft',
+ '__miniscaleMetric',
+ '__miniscaleImperial',
+ ])
+ delete points[id]
+ for (const id of ['__miniscaleMetric', '__miniscaleImperial']) delete paths[id]
+ return true
+ }
+
+ // Convert scale to a value between 0 and 5, inclusive.
+ const scaleIndex = Math.ceil(6 * Math.max(0.1, Math.min(1, scale))) - 1
+
+ // Metric size in mm / display value and imperial size in mm / display value for each scale index.
+ const sizes = [
+ [10, '1cm', 25.4 * 0.375, 'β
β³'],
+ [13, '1.3cm', 25.4 * 0.5, 'Β½β³'],
+ [16, '1.6cm', 25.4 * 0.625, 'β
β³'],
+ [19, '1.9cm', 25.4 * 0.75, 'ΒΎβ³'],
+ [22, '2.2cm', 25.4 * 0.875, 'β
β³'],
+ [25, '2.5cm', 25.4 * 1, '1β³'],
+ ]
+ const m = sizes[scaleIndex][0] / 2
+ const i = sizes[scaleIndex][2] / 2
+ const metricDisplaySize = sizes[scaleIndex][1]
+ const imperialDisplaySize = sizes[scaleIndex][3]
+ // Box points
+ points.__miniscaleMetricTopLeft = new Point(so.at.x - m, so.at.y - m)
+ points.__miniscaleMetricTopRight = new Point(so.at.x + m, so.at.y - m)
+ points.__miniscaleMetricBottomLeft = new Point(so.at.x - m, so.at.y + m)
+ points.__miniscaleMetricBottomRight = new Point(so.at.x + m, so.at.y + m)
+ points.__miniscaleImperialTopLeft = new Point(so.at.x - i, so.at.y - i)
+ points.__miniscaleImperialTopRight = new Point(so.at.x + i, so.at.y - i)
+ points.__miniscaleImperialBottomLeft = new Point(so.at.x - i, so.at.y + i)
+ points.__miniscaleImperialBottomRight = new Point(so.at.x + i, so.at.y + i)
+ // Text anchor points
+ points.__miniscaleMetric = new Point(so.at.x, so.at.y - 2 * scale)
+ points.__miniscaleImperial = new Point(so.at.x, so.at.y + 8 * scale)
+ // Rotation
+ if (so.rotate) {
+ so.rotate = Number(so.rotate)
+ let toRotate = [
+ '__miniscaleMetricTopLeft',
+ '__miniscaleMetricTopRight',
+ '__miniscaleMetricBottomLeft',
+ '__miniscaleMetricBottomRight',
+ '__miniscaleImperialTopLeft',
+ '__miniscaleImperialTopRight',
+ '__miniscaleImperialBottomLeft',
+ '__miniscaleImperialBottomRight',
+ '__miniscaleMetric',
+ '__miniscaleImperial',
+ ]
+ for (const pid of toRotate) points[pid] = points[pid].rotate(so.rotate, so.at)
+ for (const pid of toRotate.slice(8)) {
+ points[pid].attributes.set(
+ 'data-text-transform',
+ `rotate(${so.rotate * -1}, ${points[pid].x}, ${points[pid].y})`
+ )
+ }
+ }
+ // Paths
+ paths.__miniscaleImperial = new Path()
+ .attr('class', 'scalebox imperial fill-current')
+ .move(points.__miniscaleImperialTopLeft)
+ .line(points.__miniscaleImperialBottomLeft)
+ .line(points.__miniscaleImperialBottomRight)
+ .line(points.__miniscaleImperialTopRight)
+ .close()
+ paths.__miniscaleMetric = new Path()
+ .attr('class', 'scalebox metric fill-bg')
+ .move(points.__miniscaleMetricTopLeft)
+ .line(points.__miniscaleMetricBottomLeft)
+ .line(points.__miniscaleMetricBottomRight)
+ .line(points.__miniscaleMetricTopRight)
+ .close()
+ // Text
+ points.__miniscaleMetric = points.__miniscaleMetric
+ .attr('data-text', `${metricDisplaySize} x ${metricDisplaySize}`)
+ .attr('data-text-class', 'text-xs center')
+ points.__miniscaleImperial = points.__miniscaleImperial
+ .attr('data-text', `${imperialDisplaySize} x ${imperialDisplaySize}`)
+ .attr('data-text-class', 'text-xs center ')
+ },
},
}