From 89d396f151ae719e61cbd6052e7e8afe151b9836 Mon Sep 17 00:00:00 2001 From: Tom Ball Date: Thu, 14 Mar 2024 10:17:43 -0700 Subject: [PATCH] support image editor for `bmp` in Monaco (#9913) * check in * flow bmp/img through code * updates * update * oops! * Update pxteditor/monaco-fields/field_sprite.ts Co-authored-by: Richard Knoll --------- Co-authored-by: Richard Knoll --- pxteditor/monaco-fields/field_sprite.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pxteditor/monaco-fields/field_sprite.ts b/pxteditor/monaco-fields/field_sprite.ts index 29856e48773a..3cd8be6ac4f9 100644 --- a/pxteditor/monaco-fields/field_sprite.ts +++ b/pxteditor/monaco-fields/field_sprite.ts @@ -6,9 +6,11 @@ const fieldEditorId = "image-editor"; export class MonacoSpriteEditor extends MonacoReactFieldEditor { protected isPython: boolean; protected isAsset: boolean; + protected template: string; protected textToValue(text: string): pxt.ProjectImage { this.isPython = text.indexOf("`") === -1 + this.template = text.startsWith("bmp") ? "bmp" : "img" const match = pxt.parseAssetTSReference(text); if (match) { @@ -31,7 +33,7 @@ export class MonacoSpriteEditor extends MonacoReactFieldEditor } } - return createFakeAsset(pxt.sprite.imageLiteralToBitmap(text)); + return createFakeAsset(pxt.sprite.imageLiteralToBitmap(text, this.template)); } protected resultToText(result: pxt.ProjectImage): string { @@ -45,7 +47,10 @@ export class MonacoSpriteEditor extends MonacoReactFieldEditor this.isAsset = true; return pxt.getTSReferenceForAsset(result, this.isPython); } - return pxt.sprite.bitmapToImageLiteral(pxt.sprite.Bitmap.fromData(result.bitmap), this.isPython ? "python" : "typescript"); + return pxt.sprite.bitmapToImageLiteral(pxt.sprite.Bitmap.fromData(result.bitmap), + this.isPython ? "python" : "typescript", + this.template + ) } protected getFieldEditorId() { @@ -78,7 +83,7 @@ export const spriteEditorDefinition: MonacoFieldEditorDefinition = { heightInPixels: 510, matcher: { // match both JS and python - searchString: "(?:img|assets\\s*\\.\\s*image)\\s*(?:`|\\(\\s*\"\"\")(?:(?:[^(){}:\\[\\]\"';?/,+\\-=*&|^%!`~]|\\n)*)\\s*(?:`|\"\"\"\\s*\\))", + searchString: "(?:img|bmp|assets\\s*\\.\\s*image)\\s*(?:`|\\(\\s*\"\"\")(?:(?:[^(){}:\\[\\]\"';?/,+\\-=*&|^%!`~]|\\n)*)\\s*(?:`|\"\"\"\\s*\\))", isRegex: true, matchCase: true, matchWholeWord: false