Skip to content

Commit 3183412

Browse files
authored
custom block shape addon -- support for custom shapes (1/2)
1 parent afa6fa5 commit 3183412

File tree

1 file changed

+63
-5
lines changed

1 file changed

+63
-5
lines changed

src/addons/addons/custom-block-shape/userscript.js

Lines changed: 63 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,25 @@ export default async function ({ addon, console }) {
9595
const adjustedNotchSize = (multiplier > 1 ? multiplier - 0.05 :
9696
multiplier < 1 ? multiplier + 0.05 : multiplier) + ((cornerSize - 1) / 10);
9797
BlockSvg.CUSTOM_NOTCHES.forEach((notch) => {
98-
if (!notch.ogLeft) notch.ogLeft = notch.left;
99-
if (!notch.ogRight) notch.ogRight = notch.right;
98+
if (!notch.ogLeft) {
99+
notch.ogLeft = notch.left;
100+
notch.ogRight = notch.right;
101+
}
100102
notch.left = scalePathXY(notch.ogLeft, adjustedNotchSize, notchSize);
101103
notch.right = scalePathXY(notch.ogRight, adjustedNotchSize, notchSize);
102104
});
103105

104106
/* Custom Shape API Support */
105-
// TODO here...
107+
BlockSvg.CUSTOM_SHAPES.forEach((shape) => {
108+
if (!shape.ogEmptySize) {
109+
shape.ogEmptySize = shape.emptyInputWidth;
110+
shape.ogEmptyPath = shape.emptyInputPath;
111+
}
112+
shape.emptyInputWidth = shape.ogEmptySize * multiplier;
113+
shape.emptyInputPath = scalePathXY(shape.ogEmptyPath, multiplier, multiplier);
114+
});
106115

116+
BlockSvg.INPUT_SHAPE_HEXAGONAL_WIDTH = 12 * GRID_UNIT * multiplier;
107117
BlockSvg.INPUT_SHAPE_HEXAGONAL =
108118
"M " +
109119
4 * GRID_UNIT * multiplier +
@@ -129,7 +139,7 @@ export default async function ({ addon, console }) {
129139
"," +
130140
-4 * GRID_UNIT * multiplier +
131141
" z";
132-
BlockSvg.INPUT_SHAPE_HEXAGONAL_WIDTH = 12 * GRID_UNIT * multiplier;
142+
BlockSvg.INPUT_SHAPE_ROUND_WIDTH = 12 * GRID_UNIT * multiplier;
133143
BlockSvg.INPUT_SHAPE_ROUND =
134144
"M " +
135145
4 * GRID_UNIT * multiplier +
@@ -151,7 +161,55 @@ export default async function ({ addon, console }) {
151161
" 0 0 1 0 -" +
152162
8 * GRID_UNIT * multiplier +
153163
" z";
154-
BlockSvg.INPUT_SHAPE_ROUND_WIDTH = 12 * GRID_UNIT * multiplier;
164+
165+
BlockSvg.INPUT_SHAPE_SQUARE_WIDTH = 12 * GRID_UNIT * multiplier;
166+
BlockSvg.INPUT_SHAPE_SQUARE =
167+
'm 0,4A 4,4 0 0,1 4,0'+
168+
' h ' + (12 * GRID_UNIT * multiplier - 2 * 4) +
169+
'a 4,4 0 0,1 4,4' +
170+
' v ' + (8 * GRID_UNIT * multiplier - 2 * 4) +
171+
' a 4,4 0 0,1 -4,4' +
172+
' h ' + (-12 * GRID_UNIT * multiplier + 2 * 4) +
173+
'a 4,4 0 0,1 -4,-4 z';
174+
175+
BlockSvg.INPUT_SHAPE_LEAF_WIDTH = 12 * GRID_UNIT * multiplier;
176+
BlockSvg.INPUT_SHAPE_LEAF =
177+
`M ${6 * GRID_UNIT * multiplier} 0
178+
l ${2 * GRID_UNIT * multiplier} 0
179+
a ${4 * GRID_UNIT * multiplier} ${4 * GRID_UNIT * multiplier} 0 0 1 ${4 * GRID_UNIT * multiplier} ${4 * GRID_UNIT * multiplier}
180+
l 0 ${2.4 * GRID_UNIT * multiplier}
181+
a ${1.6 * GRID_UNIT * multiplier} ${1.6 * GRID_UNIT * multiplier} 0 0 1 -${1.6 * GRID_UNIT * multiplier} ${1.6 * GRID_UNIT * multiplier}
182+
h -${4 * GRID_UNIT * multiplier}
183+
l -${2.4 * GRID_UNIT * multiplier} 0
184+
a ${4 * GRID_UNIT * multiplier} ${4 * GRID_UNIT * multiplier} 0 0 1 -${4 * GRID_UNIT * multiplier} -${4 * GRID_UNIT * multiplier}
185+
l 0 -${2.4 * GRID_UNIT * multiplier}
186+
a ${1.6 * GRID_UNIT * multiplier} ${1.6 * GRID_UNIT * multiplier} 0 0 1 ${1.6 * GRID_UNIT * multiplier} -${1.6 * GRID_UNIT * multiplier}
187+
z`;
188+
189+
BlockSvg.INPUT_SHAPE_PLUS_WIDTH = 12 * GRID_UNIT * multiplier;
190+
BlockSvg.INPUT_SHAPE_PLUS =
191+
`M ${9 * GRID_UNIT * multiplier} 0
192+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 1 ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier}
193+
l 0 2
194+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 0 ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier}
195+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 1 ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier}
196+
l 0 4
197+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 1 -${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier}
198+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 0 -${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier}
199+
l 0 2
200+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 1 -${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier}
201+
h -${6 * GRID_UNIT * multiplier}
202+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 1 -${GRID_UNIT * multiplier} -${GRID_UNIT * multiplier}
203+
l 0 -2
204+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 0 -${GRID_UNIT * multiplier} -${GRID_UNIT * multiplier}
205+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 1 -${GRID_UNIT * multiplier} -${GRID_UNIT * multiplier}
206+
l 0 -4
207+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 1 ${GRID_UNIT * multiplier} -${GRID_UNIT * multiplier}
208+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 0 ${GRID_UNIT * multiplier} -${GRID_UNIT * multiplier}
209+
l 0 -2
210+
a ${GRID_UNIT * multiplier} ${GRID_UNIT * multiplier} 0 0 1 ${GRID_UNIT * multiplier} -${GRID_UNIT * multiplier}
211+
z`;
212+
155213
BlockSvg.INPUT_SHAPE_HEIGHT = 8 * GRID_UNIT * multiplier;
156214
BlockSvg.FIELD_HEIGHT = 8 * GRID_UNIT * multiplier; // NOTE: Determines string input heights
157215
BlockSvg.FIELD_WIDTH = 6 * GRID_UNIT * Math.min(multiplier, 1) + 10 * GRID_UNIT * Math.max(multiplier - 1, 0);

0 commit comments

Comments
 (0)