feat(boards): 调整micropython下 创建图像 图形块

This commit is contained in:
王立帮
2025-03-26 21:12:57 +08:00
parent f835dd2f64
commit 618bf43708
9 changed files with 174 additions and 20 deletions

View File

@@ -158,6 +158,24 @@ export const display_image_create = {
}
};
export const 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(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(32).fill(0))
};
export const display_image_builtins = {
init: function () {
this.jsonInit({
@@ -373,6 +391,24 @@ export const mixgome_display_image_create = {
}
};
export const mixgome_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(mixgome_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(8).fill(0))
};
export const mixgomini_display_image_create = {
init: function () {
this.appendDummyInput('')
@@ -392,6 +428,24 @@ export const mixgomini_display_image_create = {
}
};
export const mixgomini_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(mixgomini_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: 8 }, () => new Array(12).fill(0))
};
export const mixgo_display_image_create_new = {
init: function () {
this.appendDummyInput('')
@@ -411,6 +465,24 @@ export const mixgo_display_image_create_new = {
}
};
export const mixgo_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(mixgo_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: 8 }, () => new Array(16).fill(0))
};
export const mixgome_display_font = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);

View File

@@ -222,6 +222,29 @@ export const display_image_create = function (block, generator) {
return [code, generator.ORDER_ATOMIC];
}
export const display_bitmap_create = function (block, generator) {
const BITMAP = block.getFieldValue('BITMAP');
const data = [];
for (let i = 0; i < 12; i++) {
for (let j = 0; j < 4; j++) {
let temp = 0;
let str = '';
for (let k = 0; k < 8; k++) {
if (!BITMAP[i][j * 8 + k]) {
continue;
}
temp |= BITMAP[i][j * 8 + k] << k;
}
str = temp.toString(16);
if (str.length == 1) {
str = '0' + str;
}
data.push('0x' + str);
}
}
return [`[${data.join(',')}]`, generator.ORDER_ATOMIC];
}
export const display_clear = function (block, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
if (version == 'mpython') {
@@ -382,6 +405,27 @@ export const mixgome_display_image_create = function (block, generator) {
return [code, generator.ORDER_ATOMIC];
}
export const mixgome_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 < 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);
}
return [`bytearray(b'${data.join('')}')`, generator.ORDER_ATOMIC];
}
export const mixgomini_display_image_create = function (block, generator) {
var blinkColor = '#ff0000';
var code = '';
@@ -400,6 +444,27 @@ export const mixgomini_display_image_create = function (block, generator) {
return [code, generator.ORDER_ATOMIC];
}
export const mixgomini_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[k][i]) {
continue;
}
temp |= BITMAP[k][i] << 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 mixgome_display_font = function (a, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix";
@@ -444,6 +509,29 @@ export const mixgo_display_image_create_new = function (block, generator) {
return [code, generator.ORDER_ATOMIC];
}
export const mixgo_display_bitmap_create = function (block, generator) {
const BITMAP = block.getFieldValue('BITMAP');
const data = [];
for (let i = 0; i < 8; i++) {
for (let j = 0; j < 2; j++) {
let temp = 0;
let str = '';
for (let k = 0; k < 8; k++) {
if (!BITMAP[i][j * 8 + k]) {
continue;
}
temp |= BITMAP[i][j * 8 + 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];
}
//mpython
export const mpython_pbm_image = function (_, generator) {
const PIN_VALUE = this.getFieldValue('path');