diff --git a/boards/default_src/micropython/blocks/display_onboard.js b/boards/default_src/micropython/blocks/display_onboard.js index f5c5316b..b55e9a45 100644 --- a/boards/default_src/micropython/blocks/display_onboard.js +++ b/boards/default_src/micropython/blocks/display_onboard.js @@ -921,6 +921,24 @@ export const mixbot_display_image_create = { } }; +export const mixbot_display_bitmap_create = { + init: function () { + this.appendDummyInput('') + .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE) + this.appendDummyInput('') + .setAlign(Blockly.inputs.Align.CENTRE) + .appendField(new Blockly.FieldBitmap(mixbot_display_bitmap_create.BITMAP, null, { + filledColor: '#000', + emptyColor: '#5ba5a5', + bgColor: '#e5e7f1' + }), 'BITMAP'); + this.setOutput(true); + this.setColour(DISPLAY_ONBOARD_HUE); + this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Create_image1); + }, + BITMAP: Array.from({ length: 5 }, () => new Array(5).fill(0)) +}; + export const mixbot_display_get_screen_pixel = { init: function () { this.setColour(DISPLAY_ONBOARD_HUE); @@ -992,6 +1010,24 @@ export const bitbot_display_image_create = { } }; +export const bitbot_display_bitmap_create = { + init: function () { + this.appendDummyInput('') + .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE) + this.appendDummyInput('') + .setAlign(Blockly.inputs.Align.CENTRE) + .appendField(new Blockly.FieldBitmap(bitbot_display_bitmap_create.BITMAP, null, { + filledColor: '#000', + emptyColor: '#5ba5a5', + bgColor: '#e5e7f1' + }), 'BITMAP'); + this.setOutput(true); + this.setColour(DISPLAY_ONBOARD_HUE); + this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Create_image1); + }, + BITMAP: Array.from({ length: 12 }, () => new Array(12).fill(0)) +}; + export const onboard_tft_show_image_xy = { init: function () { this.setColour(DISPLAY_ONBOARD_HUE); diff --git a/boards/default_src/micropython/generators/display_onboard.js b/boards/default_src/micropython/generators/display_onboard.js index 21d0dcf2..4a7a5c81 100644 --- a/boards/default_src/micropython/generators/display_onboard.js +++ b/boards/default_src/micropython/generators/display_onboard.js @@ -687,6 +687,27 @@ export const mixbot_display_image_create = function (block, generator) { return [code, generator.ORDER_ATOMIC]; } +export const mixbot_display_bitmap_create = function (block, generator) { + const BITMAP = block.getFieldValue('BITMAP'); + const data = []; + for (let i = 0; i < 5; i++) { + let temp = 0; + let str = ''; + for (let k = 0; k < 5; k++) { + if (!BITMAP[i][k]) { + continue; + } + temp |= BITMAP[i][k] << k; + } + str = temp.toString(16); + if (str.length == 1) { + str = '0' + str; + } + data.push('\\x' + str); + } + return [`bytearray(b'${data.join('')}')`, generator.ORDER_ATOMIC]; +} + export const mixbot_display_get_screen_pixel = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; @@ -749,6 +770,40 @@ export const bitbot_display_image_create = function (block, generator) { return [code, generator.ORDER_ATOMIC]; } +export const bitbot_display_bitmap_create = function (block, generator) { + const BITMAP = block.getFieldValue('BITMAP'); + const data = []; + for (let i = 0; i < 12; i++) { + let temp = 0; + let str = ''; + for (let k = 0; k < 8; k++) { + if (!BITMAP[i][k]) { + continue; + } + temp |= BITMAP[i][k] << k; + } + str = temp.toString(16); + if (str.length == 1) { + str = '0' + str; + } + data.push('\\x' + str); + temp = 0; + str = ''; + for (let k = 0; k < 4; k++) { + if (!BITMAP[i][k]) { + continue; + } + temp |= BITMAP[i][k + 8] << k; + } + str = temp.toString(16); + if (str.length == 1) { + str = '0' + str; + } + data.push('\\x' + str); + } + return [`bytearray(b'${data.join('')}')`, generator.ORDER_ATOMIC]; +} + export const onboard_tft_show_image_xy = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; diff --git a/boards/default_src/micropython_robot/template.xml b/boards/default_src/micropython_robot/template.xml index cdc688bf..f62faaca 100644 --- a/boards/default_src/micropython_robot/template.xml +++ b/boards/default_src/micropython_robot/template.xml @@ -1771,8 +1771,8 @@ - - + +