fix: set default size to 120x60

pull/1/head
flop 4 weeks ago
parent 01a032ffc8
commit 18f8749594
  1. 6
      ts/index.html
  2. 34
      ts/src/driver.ts

@ -555,9 +555,9 @@
<div id="main"> <div id="main">
<div id="left"> <div id="left">
<span class="pv-label">preview · 160 × 80</span> <span class="pv-label">preview · 120 × 60</span>
<div id="display-box"> <div id="display-box">
<canvas id="canvas_root" width="160" height="80"></canvas> <canvas id="canvas_root" width="120" height="60"></canvas>
</div> </div>
<span class="pv-label">demos</span> <span class="pv-label">demos</span>
<div id="demo-btns"></div> <div id="demo-btns"></div>
@ -604,7 +604,7 @@
<script src="./public/mono-display.js"></script> <script src="./public/mono-display.js"></script>
<script> <script>
const W = 160, H = 80; const W = 120, H = 60;
let sections = []; let sections = [];
let activeSec = null, activeEl = null; let activeSec = null, activeEl = null;
let secCounter = 0, elCounter = 0; let secCounter = 0, elCounter = 0;

@ -8,7 +8,7 @@ import { MonoDisplayRenderer } from "./renderer";
/** Optional constructor arguments for MonoDisplayDriver */ /** Optional constructor arguments for MonoDisplayDriver */
export interface MonoDisplayDriverOptions { export interface MonoDisplayDriverOptions {
/** CSS colour for on-pixels. Default "#ffffff" */ /** CSS colour for on-pixels. Default "#ffffff" */
onColor?: string; onColor?: string;
/** CSS colour for off-pixels / background. Default "#000000" */ /** CSS colour for off-pixels / background. Default "#000000" */
offColor?: string; offColor?: string;
/** /**
@ -16,9 +16,9 @@ export interface MonoDisplayDriverOptions {
* Keep at 1 and use CSS to stretch for crisp upscaling. * Keep at 1 and use CSS to stretch for crisp upscaling.
*/ */
scale?: number; scale?: number;
/** Default display width for elements without inherent size. Default 160. */ /** Default display width for elements without inherent size. Default 120. */
displayWidth?: number; displayWidth?: number;
/** Default display height. Default 80. */ /** Default display height. Default 60. */
displayHeight?: number; displayHeight?: number;
/** /**
* Render rate in ticks per second. All animations and scrolls are driven by this. * Render rate in ticks per second. All animations and scrolls are driven by this.
@ -54,9 +54,9 @@ export interface MonoDisplayDriverOptions {
* ``` * ```
*/ */
export class MonoDisplayDriver { export class MonoDisplayDriver {
private canvas: HTMLCanvasElement; private canvas: HTMLCanvasElement;
private opts: Required<MonoDisplayDriverOptions>; private opts: Required<MonoDisplayDriverOptions>;
private parser: MonoDisplayParser; private parser: MonoDisplayParser;
private renderer: MonoDisplayRenderer | null = null; private renderer: MonoDisplayRenderer | null = null;
constructor(canvasId: string, options: MonoDisplayDriverOptions = {}) { constructor(canvasId: string, options: MonoDisplayDriverOptions = {}) {
@ -64,15 +64,15 @@ export class MonoDisplayDriver {
if (!el || el.tagName !== "CANVAS") throw new Error(`#${canvasId} is not a <canvas>`); if (!el || el.tagName !== "CANVAS") throw new Error(`#${canvasId} is not a <canvas>`);
this.canvas = el as HTMLCanvasElement; this.canvas = el as HTMLCanvasElement;
this.opts = { this.opts = {
onColor: options.onColor ?? "#ffffff", onColor: options.onColor ?? "#ffffff",
offColor: options.offColor ?? "#000000", offColor: options.offColor ?? "#000000",
scale: options.scale ?? 1, scale: options.scale ?? 1,
displayWidth: options.displayWidth ?? 160, displayWidth: options.displayWidth ?? 120,
displayHeight: options.displayHeight ?? 80, displayHeight: options.displayHeight ?? 60,
fps: options.fps ?? 25, fps: options.fps ?? 25,
loop: options.loop ?? true, loop: options.loop ?? true,
onError: options.onError ?? ((e: Error) => { throw e; }), onError: options.onError ?? ((e: Error) => { throw e; }),
now: options.now ?? (() => new Date()), now: options.now ?? (() => new Date()),
}; };
this.parser = new MonoDisplayParser(); this.parser = new MonoDisplayParser();
} }
@ -80,7 +80,7 @@ export class MonoDisplayDriver {
async load(loader: () => Promise<ArrayBuffer>): Promise<void> { async load(loader: () => Promise<ArrayBuffer>): Promise<void> {
try { try {
const buffer = await loader(); const buffer = await loader();
const file = this.parser.parse(buffer); const file = this.parser.parse(buffer);
if (!this.renderer) this.renderer = new MonoDisplayRenderer(this.canvas, this.opts); if (!this.renderer) this.renderer = new MonoDisplayRenderer(this.canvas, this.opts);
this.renderer.render(file); this.renderer.render(file);
} catch (err) { } catch (err) {

Loading…
Cancel
Save