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:
parent
9c25eb1fe9
commit
a3f2496785
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user