tweak for 16 bit write

This commit is contained in:
Gordon Williams 2020-05-07 21:36:00 +01:00
parent c020dc37de
commit df2ec60b5c
2 changed files with 61 additions and 1 deletions

View File

@ -1876,7 +1876,7 @@ bool _jswrap_drawImageLayerGetPixel(GfxDrawImageLayer *l, unsigned int *result)
jsvStringIteratorNext(&l->it);
colData = (colData<<8) | (unsigned char)jsvStringIteratorGetChar(&l->it);
}
colData = (colData>>(8-(l->img.bpp + (bitOffset&7)))) & l->img.bitMask;
colData = (colData>>((l->img.pixelsPerByteMask-((unsigned)pixelOffset&l->img.pixelsPerByteMask))*(unsigned)l->img.bpp)) & l->img.bitMask;
}
if (l->img.transparentCol!=colData) {
if (l->img.palettePtr) colData = l->img.palettePtr[colData&l->img.paletteMask];

View File

@ -0,0 +1,60 @@
var g = Graphics.createArrayBuffer(16,16,8,{msb:true});
g.dump = _=>{
var s = "";
var b = new Uint8Array(g.buffer);
var n = 0;
for (var y=0;y<g.getHeight();y++) {
s+="\n";
for (var x=0;x<g.getWidth();x++)
s+=".#"[b[n++]?1:0];
}
return s;
}
g.print = _=>{
print("`"+g.dump()+"`");
}
var ok = true;
function SHOULD_BE(a) {
var b = g.dump();
if (a!=b) {
console.log("GOT :"+b+"\nSHOULD BE:"+a+"\n================");
ok = false;
}
}
function testLine(IBPP) {
var IW = 16, IH = 16;
var cg = Graphics.createArrayBuffer(IW,IH,IBPP,{msb:true});
var cgimg = {width:IW,height:IH,bpp:IBPP,buffer:cg.buffer};
cg.drawLine(0,0,20,20);
g.clear(1);
g.drawImages([{image:cgimg,x:0,y:0,scale:1}],{});
console.log("bpp:",IBPP);
SHOULD_BE(`
#...............
.#..............
..#.............
...#............
....#...........
.....#..........
......#.........
.......#........
........#.......
.........#......
..........#.....
...........#....
............#...
.............#..
..............#.
...............#`)
}
testLine(1);
testLine(2);
testLine(4);
testLine(8);
testLine(16);
result = ok;