From 2fdaa44d51a9cb99607b7547b66e3da5d21bb909 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Thu, 18 Feb 2021 15:40:16 +0100 Subject: [PATCH] Load the Noto Sans font from the nodejs printer demo --- api/sixtyfps-node/lib/index.ts | 3 ++- api/sixtyfps-node/native/lib.rs | 12 ++++++++++++ examples/printerdemo/node/main.js | 14 +++++++++++--- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/api/sixtyfps-node/lib/index.ts b/api/sixtyfps-node/lib/index.ts index 8e748a083..a9d543067 100644 --- a/api/sixtyfps-node/lib/index.ts +++ b/api/sixtyfps-node/lib/index.ts @@ -233,5 +233,6 @@ module.exports = { ArrayModel: ArrayModel, Timer: { singleShot: native.singleshot_timer, - } + }, + register_font_from_path: native.register_font_from_path, }; diff --git a/api/sixtyfps-node/native/lib.rs b/api/sixtyfps-node/native/lib.rs index e52d8d930..33359b3c2 100644 --- a/api/sixtyfps-node/native/lib.rs +++ b/api/sixtyfps-node/native/lib.rs @@ -566,10 +566,22 @@ fn singleshot_timer(mut cx: FunctionContext) -> JsResult { Ok(JsUndefined::new().upcast()) } +fn register_font_from_path(mut cx: FunctionContext) -> JsResult { + let path = cx.argument::(0)?.value(); + + match sixtyfps_interpreter::register_font_from_path(&path) { + Ok(_) => Ok(JsUndefined::new().upcast()), + Err(load_err) => { + return cx.throw_error(format!("error loading font {}: {}", path, load_err)); + } + } +} + register_module!(mut m, { m.export_function("load", load)?; m.export_function("mock_elapsed_time", mock_elapsed_time)?; m.export_function("singleshot_timer", singleshot_timer)?; + m.export_function("register_font_from_path", register_font_from_path)?; Ok(()) }); diff --git a/examples/printerdemo/node/main.js b/examples/printerdemo/node/main.js index ea6b01029..25739386b 100644 --- a/examples/printerdemo/node/main.js +++ b/examples/printerdemo/node/main.js @@ -9,9 +9,17 @@ Please contact info@sixtyfps.io for more information. LICENSE END */ -// import "sixtyfps"; -require("sixtyfps"); -// import * as demo from "../ui/printerdemo.60"; +const path = require("path"); +let sixtyfps = require("sixtyfps"); + +try { + for (font_file of ["NotoSans-Regular.ttf", "NotoSans-Bold.ttf"]) { + sixtyfps.register_font_from_path(path.resolve(__dirname, "../ui/fonts", font_file)); + } +} catch (load_exception) { + console.error(load_exception); +} + let demo = require("../ui/printerdemo.60"); let window = new demo.MainWindow();