HaxeFoundation / HaxeFoundation/format
"Invalid filter" error is thrown when loading a PNG image.
- Dominant language
- Haxe
- Stars
- 139
- Forks
- 65
- PR merge metrics
- No merged PRs in 30d
Description
As we discussed in the mailing list, an "Invalid Filter" error is thrown when loading the PNG at the bottom of this post. The error is thrown by this piece of code :
https://github.com/HaxeFoundation/format/blob/master/format/png/Tools.hx
``` haxe
inline function decodeLine(y, f, getValue) {
switch( f ) {
case 0:
for( x in 0...width ) {
decode(getValue);
bgra.set(w++,vb);
bgra.set(w++,vg);
bgra.set(w++,vr);
bgra.set(w++,va);
}
case 1:
var cr = 0, cg = 0, cb = 0, ca = 0;
for( x in 0...width ) {
decode(getValue);
cb += vb; bgra.set(w++,cb);
cg += vg; bgra.set(w++,cg);
cr += vr; bgra.set(w++,cr);
ca += va; bgra.set(w++,ca);
bgra.set(w++, va);
}
case 2:
var stride = y == 0 ? 0 : width * 4;
for( x in 0...width ) {
decode(getValue);
bgra.set(w, vb + bgra.get(w - stride)); w++;
bgra.set(w, vg + bgra.get(w - stride)); w++;
bgra.set(w, vr + bgra.get(w - stride)); w++;
bgra.set(w, va + bgra.get(w - stride)); w++;
}
case 3:
var cr = 0, cg = 0, cb = 0, ca = 0;
var stride = y == 0 ? 0 : width * 4;
for( x in 0...width ) {
decode(getValue);
cb = (vb + ((cb + bgra.get(w - stride)) >> 1)) & 0xFF; bgra.set(w++, cb);
cg = (vg + ((cg + bgra.get(w - stride)) >> 1)) & 0xFF; bgra.set(w++, cg);
cr = (vr + ((cr + bgra.get(w - stride)) >> 1)) & 0xFF; bgra.set(w++, cr);
cr = (va + ((ca + bgra.get(w - stride)) >> 1)) & 0xFF; bgra.set(w++, ca);
}
case 4:
var stride = width * 4;
var cr = 0, cg = 0, cb = 0, ca = 0;
for( x in 0...width ) {
decode(getValue);
cb = (filter(bgra, x, y, stride, cb, w) + vb) & 0xFF; bgra.set(w++, cb);
cg = (filter(bgra, x, y, stride, cg, w) + vg) & 0xFF; bgra.set(w++, cg);
cr = (filter(bgra, x, y, stride, cr, w) + vr) & 0xFF; bgra.set(w++, cr);
ca = (filter(bgra, x, y, stride, ca, w) + va) & 0xFF; bgra.set(w++, ca);
}
default:
throw "Invalid filter "+f;
}
}
```
The error occur when loading the PNG with Heaps.

Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.