wire up default png loading into load.file for mesh:tool

This commit is contained in:
Stewart Allen 2022-02-26 00:06:24 -05:00
commit b6e0c1783b
3 changed files with 13 additions and 3 deletions

View file

@ -12,6 +12,7 @@ if (load.File) return;
// dep: load.stl // dep: load.stl
// dep: load.svg // dep: load.svg
// dep: load.url // dep: load.url
// dep: load.png
gapp.register('load.file', []); gapp.register('load.file', []);
load.File = { load.File = {
@ -52,6 +53,13 @@ function load_data(data, file, ext) {
case "svg": case "svg":
resolve(load.SVG.parse(data).map(m => { return {mesh: m.toFloat32(), file} })); resolve(load.SVG.parse(data).map(m => { return {mesh: m.toFloat32(), file} }));
break; break;
case "png":
load.PNG.parse(data, {
done(data) {
resolve({ mesh: data, file });
}
});
break;
default: default:
reject(`unknown file type: "${ext}" from ${file}`); reject(`unknown file type: "${ext}" from ${file}`);
break; break;
@ -76,7 +84,7 @@ function load_file(file) {
.then(data => resolve(data)) .then(data => resolve(data))
.catch(e => reject(e)); .catch(e => reject(e));
}; };
if (ext === 'stl') { if (["stl","png","3mf"].indexOf(ext) >= 0) {
reader.readAsArrayBuffer(reader.file); reader.readAsArrayBuffer(reader.file);
} else { } else {
reader.readAsBinaryString(reader.file); reader.readAsBinaryString(reader.file);

View file

@ -34,7 +34,9 @@ function parse(bin, opt = {}) {
let ondone = opt.done || noop; let ondone = opt.done || noop;
img.parse(bin, (err, output) => { img.parse(bin, (err, output) => {
let { width, height, data } = output; let { width, height, data } = output;
let { outHeight, outWidth } = opt; // let { outHeight, outWidth } = opt;
let outHeight = opt.outHeight || height;
let outWidth = opt.outWidth || width;
let imageAspect = height / width; let imageAspect = height / width;
let deviceAspect = outHeight / outWidth; let deviceAspect = outHeight / outWidth;
let div = 1; let div = 1;

View file

@ -34,7 +34,7 @@ function parse(text, opt = {}) {
bevelEnabled: false bevelEnabled: false
}); });
let array = geom.attributes.position.array; let array = geom.attributes.position.array;
// invert y // invert y (todo: invert vertex order otherwise normals inverted)
for (let i=0; i<array.length; i+=3) { for (let i=0; i<array.length; i+=3) {
array[i+1] = -array[i+1]; array[i+1] = -array[i+1];
} }