Abfahrtsanzeiger Display Basic Library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
libmonoformat/ts/src/index.ts

58 lines
2.9 KiB

// =============================================================================
// index.ts — public entry point
//
// Re-exports everything from library.ts so browser bundlers and module users
// get a single clean import path:
//
// import { MonoDisplayDriver, loadBinFile } from "./index.ts";
//
// =============================================================================
// =============================================================================
// MonoDisplay Library - binary format parser + canvas renderer
//
// Spec: Mono Display File Format Specification (see adjacent .rst)
//
// File layout (little-endian throughout):
//
// [FILE HEADER - 12 bytes]
// 4 bytes magic 0xAF 0x7E 0x2B 0x63
// 4 bytes version uint32 LE; 0=illegal, 1=current
// 2 bytes numSections uint16 LE
// 2 bytes reserved must be 0
//
// [SECTION - repeated numSections times]
// 1 byte sectionType uint8
// 3 bytes sectionSize uint24 LE, INCLUDES these 4 header bytes
// <data> sectionSize-4 bytes of section-specific data
// <pad> to 32-bit boundary (included in sectionSize)
//
// SECTION TYPES:
// 1 ElementsAlways - flags(u16) numElements(u16) elements...
// 2 ElementsTimespan - flags(u16) numElements(u16) start(u64) end(u64) elements...
// 32 CustomFont - actualSize(u24) reserved(u8) fontData...
//
// ELEMENT TYPES (uint16, all fields uint16 unless noted, 32-bit aligned):
// 1 Image2D - type xOff yOff w h reserved [packed 1bpp pixels]
// 2 Animation - type xOff yOff w h nFrames updateInterval reserved [N×frame]
// 3 HorizontalScroll - type xOff yOff w h contentW flags(u8) speed(u8) reserved [pixels]
// 4 VerticalScroll - type xOff yOff w h contentH flags(u8) speed(u8) reserved [pixels]
// 5 Line - type xO yO xT yT lineStyle(u8) flags(u8)
// 16 ClippedText - type xOff yOff w h fontIdx textLen [utf8 text + pad]
// 17 HScrollText - type xOff yOff w h flags(u8) speed(u8) fontIdx textLen [utf8 + pad]
//
// PIXEL DATA: packed 1bpp, size = ceil(w*h/8).
// px_i = y*w + x; byte = data[px_i>>3]; bit = (byte >> (px_i&7)) & 1
// Frames aligned to octet boundary. Excess bits SHOULD be 0, MUST be ignored.
//
// ALIGNMENT: all sections and elements aligned to 32-bit (4-byte) boundaries.
//
// FONT INDEX: 0..32767 = built-in; 0x8000+ = custom font in file (0x8000=first).
// =============================================================================
export * from "./types";
export { BinaryReader, packPixels, unpackPixels, packedSize, pad32 } from "./helper";
export { MonoDisplayParser, MONOFORMAT_MAGIC_HEADER } from "./parser";
export { MonoDisplayRenderer } from "./renderer";
export { type MonoDisplayDriverOptions, MonoDisplayDriver } from "./driver";
export { MonoDisplayFile, loadBinFile, buildBinBuffer } from "./file";