function canvasBezierCurve(Blockly) {
const name = BlocklyCanvasConstants.BezierCurve;
Blockly.Blocks[name] = {
init: function() {
this.appendValueInput("next")
.setCheck(null)
.appendField("BezierCurve");
this.appendValueInput("X1")
.setCheck("Number")
.setAlign(Blockly.ALIGN_CENTRE)
.appendField("X1");
this.appendValueInput("Y1")
.setCheck("Number")
.setAlign(Blockly.ALIGN_CENTRE)
.appendField("Y1");
this.appendValueInput("X2")
.setCheck("Number")
.setAlign(Blockly.ALIGN_CENTRE)
.appendField("X2");
this.appendValueInput("Y2")
.setCheck("Number")
.setAlign(Blockly.ALIGN_CENTRE)
.appendField("Y2");
this.appendValueInput("X3")
.setCheck("Number")
.setAlign(Blockly.ALIGN_CENTRE)
.appendField("X3");
this.appendValueInput("Y3")
.setCheck("Number")
.setAlign(Blockly.ALIGN_CENTRE)
.appendField("Y3");
this.appendValueInput("X4")
.setCheck("Number")
.setAlign(Blockly.ALIGN_CENTRE)
.appendField("X4");
this.appendValueInput("Y4")
.setCheck("Number")
.setAlign(Blockly.ALIGN_CENTRE)
.appendField("Y4");
this.setOutput(true, null);
this.setColour(190);
this.setTooltip("");
this.setHelpUrl("");
}
};
Blockly.JavaScript[name] = function(block) {
let next = Blockly.JavaScript.valueToCode(
block,
'next',
Blockly.JavaScript.ORDER_NONE
);
let value_x1 = Blockly.JavaScript.valueToCode(
block,
'X1',
Blockly.JavaScript.ORDER_ATOMIC
);
let value_y1 = Blockly.JavaScript.valueToCode(
block,
'Y1',
Blockly.JavaScript.ORDER_ATOMIC
);
let value_x2 = Blockly.JavaScript.valueToCode(
block,
'X2',
Blockly.JavaScript.ORDER_ATOMIC
);
let value_y2 = Blockly.JavaScript.valueToCode(
block,
'Y2',
Blockly.JavaScript.ORDER_ATOMIC
);
let value_x3 = Blockly.JavaScript.valueToCode(
block,
'X3',
Blockly.JavaScript.ORDER_ATOMIC
);
let value_y3 = Blockly.JavaScript.valueToCode(
block,
'Y3',
Blockly.JavaScript.ORDER_ATOMIC
);
let value_x4 = Blockly.JavaScript.valueToCode(
block,
'X4',
Blockly.JavaScript.ORDER_ATOMIC
);
let value_y4 = Blockly.JavaScript.valueToCode(
block,
'Y4',
Blockly.JavaScript.ORDER_ATOMIC
);
let code = `
context.moveTo(${value_x1}, ${value_y1});
context.bezierCurveTo(${value_x2}, ${value_y2}, ${value_x3}, ${value_y3}, ${value_x4}, ${value_y4});
${next}
`;
return [code, Blockly.JavaScript.ORDER_NONE];
};
return {
kind: "block",
blockxml: `<block type="${name}">
<value name="X1">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
<value name="Y1">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
<value name="X2">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
<value name="Y2">
<shadow type="math_number">
<field name="NUM">300</field>
</shadow>
</value>
<value name="X3">
<shadow type="math_number">
<field name="NUM">300</field>
</shadow>
</value>
<value name="Y3">
<shadow type="math_number">
<field name="NUM">300</field>
</shadow>
</value>
<value name="X4">
<shadow type="math_number">
<field name="NUM">300</field>
</shadow>
</value>
<value name="Y4">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>`
};
}