@bitblit/asyncglk
Version:
A Typescript Glk library
210 lines (209 loc) • 11.3 kB
TypeScript
import { Blorb } from '../blorb/blorb.js';
import { CachingDialogWrapper } from '../dialog/common/cache.js';
import type { GlkOte } from '../glkote/common/glkote.js';
import * as Const from './constants.js';
import { FileRef } from './filerefs.js';
import * as Interface from './interface.js';
import type { GlkArray, GlkApiOptions, GlkByteArray, GlkSchannel, GlkWordArray, RefBoxArg, RefStructArg, RefStructValue } from './interface.js';
import { DidNotReturn } from './interface.js';
import { type Stream } from './streams.js';
import { type Window } from './windows.js';
export declare class RefBox implements Interface.RefBox {
private value;
get_value(): Interface.RefStructValue;
set_value(val: RefStructValue): void;
}
export declare class RefStruct implements Interface.RefStruct {
private fields;
get_field(index: number): RefStructValue;
get_fields(): RefStructValue[];
push_field(val: RefStructValue): void;
set_field(index: number, val: RefStructValue): void;
}
export declare class AsyncGlk implements Interface.GlkApi {
private Blorb?;
private Dialog;
private GiDispa?;
private GlkOte;
private VM;
private before_select_hook;
private gestalt_hook;
private disprock_counter;
private do_autosave;
private exited;
private first_fref;
private gen;
private metrics;
private partial_inputs?;
private selectref?;
private special?;
private special_data?;
private current_stream;
private first_stream;
private stylehints;
private support;
private timer;
version: string;
private first_window;
private root_window;
private windows_changed;
init(options: GlkApiOptions): void;
call_may_not_return(id: number): boolean;
fatal_error(msg: string): void;
getlibrary(class_name: string): Blorb | Interface.GiDispa | Interface.GlkVM | GlkOte | CachingDialogWrapper | null;
inited(): boolean;
restore_allstate(_state: any): void;
save_allstate(): void;
update(): void;
Const: typeof Const;
DidNotReturn: {
dummy: string;
};
RefBox: typeof RefBox;
RefStruct: typeof RefStruct;
byte_array_to_string(arr: GlkByteArray): string;
glk_put_jstring(val: string, _all_bytes?: boolean): void;
glk_put_jstring_stream(str: Stream, val: string, _all_bytes?: boolean): void;
uni_array_to_string(arr: GlkWordArray): string;
glk_buffer_canon_decompose_uni(buf: GlkWordArray, initlen: number): number;
glk_buffer_canon_normalize_uni(buf: GlkWordArray, initlen: number): number;
glk_buffer_to_lower_case_uni(buf: GlkWordArray, initlen: number): number;
glk_buffer_to_title_case_uni(buf: GlkWordArray, initlen: number, lowerrest: number): number;
glk_buffer_to_upper_case_uni(buf: GlkWordArray, initlen: number): number;
glk_cancel_char_event(win: Window): void;
glk_cancel_hyperlink_event(win: Window): void;
glk_cancel_line_event(win: Window, ev?: RefStructArg): void;
glk_cancel_mouse_event(win: Window): void;
glk_char_to_lower(val: number): number;
glk_char_to_upper(val: number): number;
glk_current_simple_time(factor: number): number;
glk_current_time(struct: RefStruct): void;
glk_date_to_simple_time_local(struct: RefStruct, factor: number): number;
glk_date_to_simple_time_utc(struct: RefStruct, factor: number): number;
glk_date_to_time_local(datestruct: RefStruct, timestruct: RefStruct): void;
glk_date_to_time_utc(datestruct: RefStruct, timestruct: RefStruct): void;
glk_exit(): typeof DidNotReturn;
glk_fileref_create_by_name(usage: number, filename: string, rock: number): FileRef;
glk_fileref_create_by_prompt(usage: number, fmode: number, rock: number): typeof DidNotReturn;
glk_fileref_create_from_fileref(usage: number, oldfref: FileRef, rock: number): FileRef;
glk_fileref_create_temp(usage: number, rock: number): FileRef;
glk_fileref_delete_file(fref: FileRef): void;
glk_fileref_destroy(fref: FileRef): void;
glk_fileref_does_file_exist(fref: FileRef): boolean;
glk_fileref_get_rock(fref: FileRef): number;
glk_fileref_iterate(fref?: FileRef, rockbox?: RefBoxArg): FileRef | null;
glk_gestalt(sel: number, val: number): number;
glk_gestalt_ext(sel: number, val: number, arr: GlkArray | null): number;
glk_get_buffer_stream(str: Stream, buf: GlkByteArray): number;
glk_get_buffer_stream_uni(str: Stream, buf: GlkWordArray): number;
glk_get_char_stream(str: Stream): number;
glk_get_char_stream_uni(str: Stream): number;
glk_get_line_stream(str: Stream, buf: GlkByteArray): number;
glk_get_line_stream_uni(str: Stream, buf: GlkWordArray): number;
glk_image_draw(win: Window, imgid: number, val1: number, val2: number): number;
glk_image_draw_scaled(win: Window, imgid: number, val1: number, val2: number, width: number, height: number): number;
glk_image_get_info(imgid: number, width?: RefBoxArg, height?: RefBoxArg): number;
glk_put_buffer(val: GlkByteArray): void;
glk_put_buffer_stream(str: Stream, val: GlkByteArray): void;
glk_put_buffer_stream_uni(str: Stream, val: GlkWordArray): void;
glk_put_buffer_uni(val: GlkWordArray): void;
glk_put_char(val: number): void;
glk_put_char_stream(str: Stream, val: number): void;
glk_put_char_stream_uni(str: Stream, val: number): void;
glk_put_char_uni(val: number): void;
glk_put_string(val: string): void;
glk_put_string_stream(str: Stream, val: string): void;
glk_put_string_stream_uni(str: Stream, val: string): void;
glk_put_string_uni(val: string): void;
glk_request_char_event(win: Window): void;
glk_request_char_event_uni(win: Window): void;
glk_request_hyperlink_event(win: Window): void;
glk_request_line_event(win: Window, buf: GlkByteArray, initlen?: number): void;
glk_request_line_event_uni(win: Window, buf: GlkWordArray, initlen?: number): void;
glk_request_mouse_event(win: Window): void;
glk_request_timer_events(msecs: number): void;
glk_schannel_create(_rock: number): GlkSchannel | null;
glk_schannel_create_ext(_rock: number, _volume: number): GlkSchannel | null;
glk_schannel_destroy(_schannel: GlkSchannel): void;
glk_schannel_get_rock(_schannel: GlkSchannel): number;
glk_schannel_iterate(_schannel?: GlkSchannel, rockbox?: RefBoxArg): GlkSchannel | null;
glk_schannel_pause(_schannel: GlkSchannel): void;
glk_schannel_play(_schannel: GlkSchannel, _sound: number): number;
glk_schannel_play_ext(_schannel: GlkSchannel, _sound: number, _repeats: number, _notify: number): number;
glk_schannel_play_multi(_schannels: GlkSchannel[], _sounds: GlkArray, _notify: number): number;
glk_schannel_set_volume(_schannel: GlkSchannel, _volume: number): void;
glk_schannel_set_volume_ext(_schannel: GlkSchannel, _volume: number, __duration: number, notify: number): void;
glk_schannel_stop(_schannel: GlkSchannel): void;
glk_schannel_unpause(_schannel: GlkSchannel): void;
glk_select(ev: RefStruct): typeof DidNotReturn;
glk_select_poll(ev: RefStruct): void;
glk_set_echo_line_event(win: Window, val: number): void;
glk_set_hyperlink(val: number): void;
glk_set_hyperlink_stream(str: Stream, val: number): void;
glk_set_style(style: number): void;
glk_set_style_stream(str: Stream, style: number): void;
glk_set_terminators_line_event(win: Window, keycodes: GlkArray | null): void;
glk_set_window(win?: Window): void;
glk_sound_load_hint(_sound: number, _load: number): void;
glk_stream_close(str: Stream, result?: RefStructArg): void;
glk_stream_get_current(): Stream | null;
glk_stream_get_position(str: Stream): number;
glk_stream_get_rock(str: Stream): number;
glk_stream_iterate(str?: Stream, rockbox?: RefBoxArg): Stream | null;
glk_stream_open_file(fref: FileRef, mode: number, rock: number): Stream | null;
glk_stream_open_file_uni(fref: FileRef, mode: number, rock: number): Stream | null;
glk_stream_open_memory(buf: GlkByteArray | null, mode: number, rock: number): Stream;
glk_stream_open_memory_uni(buf: GlkWordArray | null, mode: number, rock: number): Stream;
glk_stream_open_resource(filenum: number, rock: number): Stream | null;
glk_stream_open_resource_uni(filenum: number, rock: number): Stream | null;
glk_stream_set_current(str: Stream | null): void;
glk_stream_set_position(str: Stream, pos: number, seekmode: number): void;
glk_style_distinguish(_win: Window, _style1: number, _style2: number): number;
glk_style_measure(_win: Window, _style: number, _hint: number, result?: RefBoxArg): number;
glk_stylehint_clear(wintype: number, style: number, hint: number): void;
glk_stylehint_set(wintype: number, style: number, hint: number, value: number): void;
glk_tick(): void;
glk_simple_time_to_date_local(time: number, factor: number, struct: RefStruct): void;
glk_simple_time_to_date_utc(time: number, factor: number, struct: RefStruct): void;
glk_time_to_date_local(timestruct: RefStruct, datestruct: RefStruct): void;
glk_time_to_date_utc(timestruct: RefStruct, datestruct: RefStruct): void;
glk_window_clear(win: Window): void;
glk_window_close(win: Window, stats?: RefStructArg): void;
glk_window_erase_rect(win: Window, left: number, top: number, width: number, height: number): void;
glk_window_fill_rect(win: Window, colour: number, left: number, top: number, width: number, height: number): void;
glk_window_flow_break(win: Window): void;
glk_window_get_arrangement(win: Window, method?: RefBoxArg, size?: RefBoxArg, keywin?: RefBoxArg): void;
glk_window_get_echo_stream(win: Window): Stream | null;
glk_window_get_parent(win: Window): Window | null;
glk_window_get_rock(win: Window): number;
glk_window_get_root(): Window | null;
glk_window_get_sibling(win: Window): Window | null;
glk_window_get_size(win: Window, widthbox?: RefBoxArg, heightbox?: RefBoxArg): void;
glk_window_get_stream(win: Window): Stream;
glk_window_get_type(win: Window): number;
glk_window_iterate(win?: Window, rockbox?: RefBoxArg): Window | null;
glk_window_move_cursor(win: Window, xpos: number, ypos: number): void;
glk_window_open(splitwin: Window | null, method: number, size: number, wintype: number, rock: number): Window | null;
glk_window_set_arrangement(win: Window, method: number, size: number, keywin?: Window): void;
glk_window_set_background_color(win: Window, colour: number): void;
glk_window_set_echo_stream(win: Window, stream: Stream | null): void;
garglk_set_reversevideo(val: number): void;
garglk_set_reversevideo_stream(str: Stream, val: number): void;
garglk_set_zcolors(fg: number, bg: number): void;
garglk_set_zcolors_stream(str: Stream, fg: number, bg: number): void;
/** Process an input event */
private accept;
private create_fileref;
private create_file_stream;
private create_memory_stream;
private create_resource_stream;
private draw_image;
private handle_line_input;
private rearrange_window;
private register_stream;
private register_window;
private remove_window;
private request_char_event;
private request_line_event;
private unregister_stream;
}