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 @@ All Contributors

Kristin Ruben
Kristin Ruben

πŸ’» Loudepeuter
Loudepeuter

🌍 Lucian
Lucian

πŸ“‹ + MA-TATAS
MA-TATAS

πŸ“– Marcus
Marcus

🌍 - Martin Tribo
Martin Tribo

πŸ“– + Martin Tribo
Martin Tribo

πŸ“– Nadege Michel
Nadege Michel

⚠️ πŸ“– Natalia
Natalia

πŸ’» 🎨 πŸ“ Nathan Yergler
Nathan Yergler

πŸ“– Nick Dower
Nick Dower

πŸ“– πŸ’» πŸ› Nikhil Chelliah
Nikhil Chelliah

πŸ“– OysteinHoiby
OysteinHoiby

πŸ’» - Patrick Forringer
Patrick Forringer

πŸ”Œ + Patrick Forringer
Patrick Forringer

πŸ”Œ Paul
Paul

πŸ“– πŸ“ 🌍 Phillip Thelen
Phillip Thelen

πŸ’» Pixieish
Pixieish

πŸ“– Prof. dr. Sorcha NΓ­ Dhubhghaill
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“– Quentin FELIX
Quentin FELIX

πŸ’» 🎨 Rik Hekker
Rik Hekker

πŸ› - Sam Livingston-Gray
Sam Livingston-Gray

πŸ“– + Sam Livingston-Gray
Sam Livingston-Gray

πŸ“– Sanne
Sanne

πŸ’» πŸ“– Sara Latorre
Sara Latorre

🌍 SeaZeeZee
SeaZeeZee

πŸ“– πŸ’» SimonbJohnson
SimonbJohnson

πŸ› SirCharlotte
SirCharlotte

🌍 Slylele
Slylele

πŸ“– 🌍 - Soazillon
Soazillon

🌍 + Soazillon
Soazillon

🌍 SoneaTheBest
SoneaTheBest

🌍 Stefan Sydow
Stefan Sydow

🌍 πŸ“– πŸ’» TrΓ­ona
TrΓ­ona

πŸ“– Unmutual
Unmutual

πŸ“– Wouter van Wageningen
Wouter van Wageningen

πŸ’» 🎨 πŸ”§ amysews
amysews

πŸ“– - anna-puk
anna-puk

πŸ’» + anna-puk
anna-puk

πŸ’» beautifulsummermoon
beautifulsummermoon

🌍 berce
berce

πŸ“– biou
biou

πŸ’» bobgeorgethe3rd
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 brmlyklr
brmlyklr

πŸ“– chri5b
chri5b

πŸ’» ⚠️ - dingcycle
dingcycle

🌍 + dingcycle
dingcycle

🌍 drowned-in-books
drowned-in-books

πŸ’¬ econo202
econo202

πŸ“– ericamattos
ericamattos

🌍 fightingrabbit
fightingrabbit

πŸ’» gaylyndie
gaylyndie

πŸ“– grimlokason
grimlokason

πŸ’» - hellgy
hellgy

🎨 + hellgy
hellgy

🎨 jackseye
jackseye

πŸ“– marckiesel
marckiesel

🌍 mesil
mesil

πŸ› starfetch
starfetch

πŸ’» πŸ“– 🌍 🎨 timorl
timorl

πŸ’» ttimearl
ttimearl

πŸ–‹ - tuesgloomsday
tuesgloomsday

πŸ“– + tuesgloomsday
tuesgloomsday

πŸ“– valadaptive
valadaptive

πŸ’» viocky
viocky

🌍 woolishboy
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 ') + }, }, }