From 2a1dcd97e954f158bfdcd5ca971685ff64d42582 Mon Sep 17 00:00:00 2001 From: sawka Date: Sun, 5 Feb 2023 23:01:27 -0800 Subject: [PATCH] add stub imagerenderer code --- src/imagerenderer.ts | 71 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/imagerenderer.ts diff --git a/src/imagerenderer.ts b/src/imagerenderer.ts new file mode 100644 index 00000000..eab7214c --- /dev/null +++ b/src/imagerenderer.ts @@ -0,0 +1,71 @@ +import * as mobx from "mobx"; +import {WindowSize} from "./types"; + +const InitialSize = 10*1024; +const IncreaseFactor = 1.5; + +class ImageRenderer { + dataSize : number; + imageData : Uint8Array; + brokenData : boolean; + isDone : mobx.IObservableValue; + + constructor() { + this._resetData(); + this.isDone = mobx.observable.box(false, {name: "isDone"}); + } + + _resetData() { + this.dataSize = 0; + this.imageData = new Uint8Array(InitialSize); + this.brokenData = false; + } + + dispose() : void { + this._resetData(); + } + + reload(delayMs : number) : void { + } + + _growArray(minSize : number) : void { + let newSize = Math.round(this.imageData.length * IncreaseFactor); + if (newSize < minSize) { + newSize = minSize; + } + let newData = new Uint8Array(newSize); + newData.set(this.imageData); + this.imageData = newData; + } + + receiveData(pos : number, data : Uint8Array, reason? : string) : void { + if (pos != this.dataSize) { + this.brokenData = true; + return; + } + if (this.dataSize + data.length > this.imageData.length) { + this._growArray(this.dataSize + data.length); + } + this.imageData.set(data, pos); + this.dataSize += data.length; + } + + cmdDone() : void { + } + + resizeWindow(size : WindowSize) : void { + } + + resizeCols(cols : number) : void { + } + + giveFocus() : void { + } + + getUsedRows() : number { + return -1; + } +} + +export {ImageRenderer}; +