1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-06-10 06:29:28 +00:00

pixeleditor: added wpimg, asset editor error msg

This commit is contained in:
Steven Hugg 2022-08-11 13:59:59 -05:00
parent 9c25eb1fe9
commit a3f2496785

View File

@ -27,22 +27,23 @@ export type SelectableTilemap = {
} }
export type PixelEditorImageFormat = { export type PixelEditorImageFormat = {
w:number w:number // width
h:number h:number // height
count?:number count?:number // # of images
bpp?:number bpp?:number // bits per pixel
np?:number np?:number // number of planes
bpw?:number bpw?:number // bits per word
sl?:number sl?:number // words per line
pofs?:number pofs?:number // plane offset
remap?:number[] remap?:number[] // remap array
reindex?:number[] reindex?:number[] // reindex array
brev?:boolean brev?:boolean // bit reverse (msb is leftmost)
flip?:boolean flip?:boolean // flip vertically
skip?:number // skip bytes
wpimg?:number // words per image
aspect?:number // aspect ratio
xform?:string // CSS transform
destfmt?:PixelEditorImageFormat destfmt?:PixelEditorImageFormat
xform?:string
skip?:number
aspect?:number
}; };
export type PixelEditorPaletteFormat = { export type PixelEditorPaletteFormat = {
@ -162,12 +163,13 @@ export function convertWordsToImages(words:UintArray, fmt:PixelEditorImageFormat
var mask = (1 << bpp)-1; var mask = (1 << bpp)-1;
var pofs = fmt.pofs || wordsperline*height*count; var pofs = fmt.pofs || wordsperline*height*count;
var skip = fmt.skip || 0; var skip = fmt.skip || 0;
var wpimg = fmt.wpimg || wordsperline*height;
var images = []; var images = [];
for (var n=0; n<count; n++) { for (var n=0; n<count; n++) {
var imgdata = []; var imgdata = [];
for (var y=0; y<height; y++) { for (var y=0; y<height; y++) {
var yp = fmt.flip ? height-1-y : y; var yp = fmt.flip ? height-1-y : y;
var ofs0 = n*wordsperline*height + yp*wordsperline; var ofs0 = wpimg*n + yp*wordsperline;
var shift = 0; var shift = 0;
for (var x=0; x<width; x++) { for (var x=0; x<width; x++) {
var color = 0; var color = 0;
@ -202,19 +204,22 @@ export function convertImagesToWords(images:Uint8Array[], fmt:PixelEditorImageFo
var mask = (1 << bpp)-1; var mask = (1 << bpp)-1;
var pofs = fmt.pofs || wordsperline*height*count; var pofs = fmt.pofs || wordsperline*height*count;
var skip = fmt.skip || 0; var skip = fmt.skip || 0;
var wpimg = fmt.wpimg || wordsperline*height;
var words; var words;
if (nplanes > 0 && fmt.sl) // TODO? if (nplanes > 0 && fmt.sl) // TODO?
words = new Uint8Array(wordsperline*height*count); words = new Uint8Array(wpimg*count);
else if (bitsperword <= 8) else if (bitsperword <= 8)
words = new Uint8Array(wordsperline*height*count*nplanes); words = new Uint8Array(wpimg*count*nplanes);
else else
words = new Uint32Array(wordsperline*height*count*nplanes); words = new Uint32Array(wpimg*count*nplanes);
for (var n=0; n<count; n++) { for (var n=0; n<count; n++) {
var imgdata = images[n]; var imgdata = images[n];
var i = 0; var i = 0;
for (var y=0; y<height; y++) { for (var y=0; y<height; y++) {
var yp = fmt.flip ? height-1-y : y; var yp = fmt.flip ? height-1-y : y;
var ofs0 = n*wordsperline*height + yp*wordsperline; var ofs0 = n*wpimg + yp*wordsperline;
var shift = 0; var shift = 0;
for (var x=0; x<width; x++) { for (var x=0; x<width; x++) {
var color = imgdata[i++]; var color = imgdata[i++];
@ -455,7 +460,7 @@ export class TextDataNode extends CodeProjectDataNode {
} }
updateLeft() { updateLeft() {
if (this.right.words.length != this.words.length) if (this.right.words.length != this.words.length)
throw Error("Expected " + this.right.words.length + " bytes; image has " + this.words.length); throw Error("Cannot put " + this.right.words.length + " image bytes into array of " + this.words.length + " bytes");
this.words = this.right.words; this.words = this.right.words;
// TODO: reload editors? // TODO: reload editors?
var datastr = this.text.substring(this.start, this.end); var datastr = this.text.substring(this.start, this.end);
@ -1072,7 +1077,12 @@ class PixEditor extends Viewer {
commit() { commit() {
this.updateImage(); this.updateImage();
this.left.refreshLeft(); try {
this.left.refreshLeft();
} catch (e) {
console.log(e);
alert(`Could not update source code. ${e}`);
}
} }
remapPixels(mapfn : (x:number,y:number) => number) { remapPixels(mapfn : (x:number,y:number) => number) {