more transform functions for various line combos (#56)

This commit is contained in:
Kurt Hutten
2023-03-10 14:55:16 +11:00
committed by GitHub
parent c3ead3b074
commit eebddb0ce2
4 changed files with 174 additions and 31 deletions

View File

@ -78,6 +78,23 @@ type TransformMap = {
}
}
const xyLineSetLength =
(
xOrY: 'xLine' | 'yLine',
referenceSeg = false
): TransformInfo['createNode'] =>
({ referenceSegName, tag, forceValueUsedInTransform }) =>
(args) => {
console.log('args', args)
const segRef = createSegLen(referenceSegName)
const lineVal = forceValueUsedInTransform
? forceValueUsedInTransform
: referenceSeg
? segRef
: args[0]
return createCallWrapper(xOrY, lineVal, tag, getArgLiteralVal(args[0]))
}
const basicAngledLineCreateNode =
(
referenceSeg: 'ang' | 'len' | 'none' = 'none',
@ -397,6 +414,20 @@ const transformMap: TransformMap = {
() =>
createCallWrapper('yLineTo', varValB, tag),
},
setAngle: {
tooltip: 'angledLineToY',
createNode:
({ varValB, tag, forceValueUsedInTransform }) =>
(args) => {
console.log(getArgLiteralVal(args[0]))
return createCallWrapper(
'angledLineToY',
[forceValueUsedInTransform || args[0], varValB],
tag,
getArgLiteralVal(args[0])
)
},
},
},
},
angledLine: {
@ -675,8 +706,40 @@ const transformMap: TransformMap = {
tooltip: 'xLine',
createNode:
({ referenceSegName, tag }) =>
() =>
createCallWrapper('xLine', createSegLen(referenceSegName), tag),
(arg) => {
const argVal = getArgLiteralVal(arg[0])
const segLen = createSegLen(referenceSegName) as BinaryPart
const val = argVal > 0 ? segLen : createUnaryExpression(segLen)
return createCallWrapper('xLine', val, tag, argVal)
},
},
setHorzDistance: {
tooltip: 'xLineTo',
createNode: ({ referenceSegName, tag, forceValueUsedInTransform }) => {
return (args, referencedSegment) => {
console.log('args', args)
const valueUsedInTransform = roundOff(
getArgLiteralVal(args?.[0]) - (referencedSegment?.to?.[0] || 0),
2
)
const makeBinExp = createBinaryExpression([
createSegEnd(referenceSegName, true),
'+',
(forceValueUsedInTransform as BinaryPart) ||
createLiteral(valueUsedInTransform),
])
return createCallWrapper(
'xLineTo',
makeBinExp,
tag,
valueUsedInTransform
)
}
},
},
setLength: {
tooltip: 'xLine',
createNode: xyLineSetLength('xLine'),
},
},
},
@ -689,6 +752,10 @@ const transformMap: TransformMap = {
() =>
createCallWrapper('yLine', createSegLen(referenceSegName), tag),
},
setLength: {
tooltip: 'yLine',
createNode: xyLineSetLength('yLine'),
},
},
},
xLineTo: {