forked from lightning-tv/solid
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlightningInit.ts
More file actions
45 lines (40 loc) · 1.48 KB
/
lightningInit.ts
File metadata and controls
45 lines (40 loc) · 1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import * as lng from '@lightningjs/renderer';
import { Config, DOM_RENDERING } from './config.js';
import { DOMRendererMain, loadFontToDom } from './dom-renderer/domRenderer.js';
import { DomRendererMainSettings } from './dom-renderer/domRendererTypes.js';
import { FontLoadOptions } from './intrinsicTypes.js';
export type SdfFontType = 'ssdf' | 'msdf';
// Global renderer instance: can be either the Lightning or DOM implementation
export let renderer: lng.RendererMain | DOMRendererMain;
export const getRenderer = () => renderer;
export function startLightningRenderer(
options: lng.RendererMainSettings | DomRendererMainSettings,
rootId: string | HTMLElement = 'app',
) {
const enableDomRenderer = DOM_RENDERING && Config.domRendererEnabled;
renderer = enableDomRenderer
? new DOMRendererMain(options, rootId)
: new lng.RendererMain(options, rootId);
return renderer;
}
export function loadFonts(fonts: FontLoadOptions[]) {
const enableDomRenderer = DOM_RENDERING && Config.domRendererEnabled;
for (const font of fonts) {
// WebGL — SDF
if (
renderer.stage.renderer.mode === 'webgl' &&
'type' in font &&
(font.type === 'msdf' || font.type === 'ssdf')
) {
renderer.stage.loadFont('sdf', font);
}
// Canvas — Web
else if ('fontUrl' in font) {
if (enableDomRenderer) {
loadFontToDom(font);
} else if (renderer.stage.renderer.mode !== 'webgl') {
renderer.stage.loadFont('canvas', font);
}
}
}
}