@@ -45,6 +45,7 @@ export type PixelEditorImageFormat = {
4545 flip ?: boolean // flip vertically
4646 skip ?: number // skip bytes
4747 wpimg ?: number // words per image
48+ il ?: boolean // interleave images row by row
4849 aspect ?: number // aspect ratio
4950 xform ?: string // CSS transform
5051 destfmt ?: PixelEditorImageFormat
@@ -169,12 +170,14 @@ export function convertWordsToImages(words: UintArray, fmt: PixelEditorImageForm
169170 var pofs = fmt . pofs || wordsperline * height * count ;
170171 var skip = fmt . skip || 0 ;
171172 var wpimg = fmt . wpimg || wordsperline * height ;
173+ var rowstride = wordsperline ;
174+ if ( fmt . il ) { wpimg = wordsperline ; rowstride = wordsperline * count ; }
172175 var images = [ ] ;
173176 for ( var n = 0 ; n < count ; n ++ ) {
174177 var imgdata = [ ] ;
175178 for ( var y = 0 ; y < height ; y ++ ) {
176179 var yp = fmt . flip ? height - 1 - y : y ;
177- var ofs0 = wpimg * n + yp * wordsperline ;
180+ var ofs0 = wpimg * n + yp * rowstride ;
178181 var shift = 0 ;
179182 for ( var x = 0 ; x < width ; x ++ ) {
180183 var color = 0 ;
@@ -256,21 +259,24 @@ export function convertImagesToWords(images: Uint8Array[], fmt: PixelEditorImage
256259 var pofs = fmt . pofs || wordsperline * height * count ;
257260 var skip = fmt . skip || 0 ;
258261 var wpimg = fmt . wpimg || wordsperline * height ;
262+ var rowstride = wordsperline ;
263+ if ( fmt . il ) { wpimg = wordsperline ; rowstride = wordsperline * count ; }
259264
265+ var totalwords = rowstride * height ;
260266 var words ;
261267 if ( nplanes > 0 && fmt . sl ) // TODO?
262- words = new Uint8Array ( wpimg * count ) ;
268+ words = new Uint8Array ( totalwords ) ;
263269 else if ( bitsperword <= 8 )
264- words = new Uint8Array ( wpimg * count * nplanes ) ;
270+ words = new Uint8Array ( totalwords * nplanes ) ;
265271 else
266- words = new Uint32Array ( wpimg * count * nplanes ) ;
272+ words = new Uint32Array ( totalwords * nplanes ) ;
267273
268274 for ( var n = 0 ; n < count ; n ++ ) {
269275 var imgdata = images [ n ] ;
270276 var i = 0 ;
271277 for ( var y = 0 ; y < height ; y ++ ) {
272278 var yp = fmt . flip ? height - 1 - y : y ;
273- var ofs0 = n * wpimg + yp * wordsperline ;
279+ var ofs0 = n * wpimg + yp * rowstride ;
274280 var shift = 0 ;
275281 for ( var x = 0 ; x < width ; x ++ ) {
276282 var color = imgdata [ i ++ ] ;
0 commit comments