Skip to content

Commit cbab810

Browse files
committed
Move readFromStream back into main
1 parent e31f61c commit cbab810

2 files changed

Lines changed: 39 additions & 36 deletions

File tree

src/extra/dom-utils.ts

Lines changed: 3 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -36,51 +36,18 @@ export function makeDroppable(previewInstance: WebGLPreview): void {
3636
* @emits update - Custom event with file metadata when file ends
3737
*/
3838
async function readFromFile(preview: WebGLPreview, file: File): Promise<void> {
39-
const stream = file.stream();
40-
const reader = stream.getReader();
41-
let result;
42-
let tail = '';
43-
let size = 0;
44-
45-
do {
46-
result = await reader.read();
47-
const length = result.value?.length ?? 0;
48-
if (length === 0) {
49-
console.debug('stream ended');
50-
break;
51-
}
52-
console.debug('reading from stream', Math.floor(length / 1024), 'kB');
53-
size += length;
54-
const str = decode(result.value);
55-
const idxNewLine = str.lastIndexOf('\n');
56-
const maxFullLine = str.slice(0, idxNewLine);
57-
58-
// parse increments but don't render yet
59-
const { commands } = preview.parser.parseGCode(tail + maxFullLine);
60-
61-
// we'll execute the commands immediately, for now
62-
preview.interpreter.execute(commands, preview.job);
63-
64-
tail = str.slice(idxNewLine);
65-
} while (!result.done);
66-
console.debug('total read from stream', Math.floor(size / 1024), 'kB');
67-
39+
await preview.readFromStream( file.stream());
40+
6841
preview.endLayer = preview.job.layers.length;
6942

7043
// dispatch a custom event to notify that the file has been loaded
7144
const event = new CustomEvent('update', {
7245
detail: {
7346
filename: file.name,
74-
size: size,
47+
size: file.size,
7548
layers: preview.job.layers.length,
7649
paths: preview.job.paths.length
7750
}
7851
});
7952
preview.canvas.dispatchEvent(event);
80-
81-
preview.renderAnimated();
82-
}
83-
84-
function decode(uint8array: Uint8Array) {
85-
return new TextDecoder('utf-8').decode(uint8array);
8653
}

src/webgl-preview.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,38 @@ export class WebGLPreview {
865865
return batchedMesh;
866866
}
867867

868+
async readFromStream(stream: ReadableStream): Promise<void> {
869+
const reader = stream.getReader();
870+
let result;
871+
let tail = '';
872+
let size = 0;
873+
874+
do {
875+
result = await reader.read();
876+
const length = result.value?.length ?? 0;
877+
if (length === 0) {
878+
console.debug('stream ended');
879+
break;
880+
}
881+
console.debug('reading from stream', Math.floor(length / 1024), 'kB');
882+
size += length;
883+
const str = decode(result.value);
884+
const idxNewLine = str.lastIndexOf('\n');
885+
const maxFullLine = str.slice(0, idxNewLine);
886+
887+
// parse increments but don't render yet
888+
const { commands } = this.parser.parseGCode(tail + maxFullLine);
889+
890+
// we'll execute the commands immediately, for now
891+
this.interpreter.execute(commands, this.job);
892+
893+
tail = str.slice(idxNewLine);
894+
} while (!result.done);
895+
console.debug('total read from stream', Math.floor(size / 1024), 'kB');
896+
897+
this.renderAnimated();
898+
}
899+
868900
/**
869901
* Initializes the developer GUI if dev mode is enabled
870902
*/
@@ -890,3 +922,7 @@ export class WebGLPreview {
890922
}
891923
}
892924
}
925+
926+
function decode(uint8array: Uint8Array) {
927+
return new TextDecoder('utf-8').decode(uint8array);
928+
}

0 commit comments

Comments
 (0)