From 73fc4dee3dae756f649b030ebceb4fd2a8b766a3 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Mon, 20 Apr 2020 17:50:23 -0400 Subject: [PATCH] enable pluggable infill module development --- js/kiri-fill.js | 5 +++++ js/kiri-init.js | 4 ++++ js/kiri-slice.js | 5 ++++- js/web-server.js | 7 +++++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/js/kiri-fill.js b/js/kiri-fill.js index fd11acf9..c16a949a 100644 --- a/js/kiri-fill.js +++ b/js/kiri-fill.js @@ -20,6 +20,11 @@ var gs_kiri_fill = exports; gyroid: fillGyroid, triangle: fillTriangle, linear: fillLinear + }, + CACHE = self.kiri.fill_fixed = { + hex: fillHexFull, + grid: fillGrid, + triangle: fillTriangle }; function fillHexFull(target) { diff --git a/js/kiri-init.js b/js/kiri-init.js index c61c781b..0b654b87 100644 --- a/js/kiri-init.js +++ b/js/kiri-init.js @@ -1053,6 +1053,8 @@ var gs_kiri_init = exports; // MAIN INITIALIZATION FUNCTION function init_one() { + API.event.emit('init.one'); + // ensure we have settings from last session API.conf.restore(); @@ -1716,6 +1718,8 @@ var gs_kiri_init = exports; // SECOND STAGE INIT AFTER UI RESTORED function init_two() { + API.event.emit('init.two'); + let current = settings(), control = current.controller; diff --git a/js/kiri-slice.js b/js/kiri-slice.js index f3385a94..290957eb 100644 --- a/js/kiri-slice.js +++ b/js/kiri-slice.js @@ -11,6 +11,7 @@ let gs_kiri_slice = exports; let KIRI = self.kiri, FILL = KIRI.fill, + FILLFIXED = KIRI.fill_fixed, BASE = self.base, UTIL = BASE.util, POLY = BASE.polygons, @@ -675,6 +676,8 @@ let gs_kiri_slice = exports; line = [], // callback passed to pluggable infill algorithm target = { + slice: function() { return scope }, + options: function() { return options }, lineWidth: function() { return options.lineWidth }, bounds: function() { return bounds }, zIndex: function() { return scope.index }, @@ -709,7 +712,7 @@ let gs_kiri_slice = exports; scope._fill_finger = POLY.fingerprint(polys); - let skippable = type !== 'gyroid' && type !== 'linear'; + let skippable = FILLFIXED[type] ? true : false; let miss = false; // if the layer below has the same fingerprint, we may be able to clone its infill if (skippable && scope.fingerprintSame(down)) { diff --git a/js/web-server.js b/js/web-server.js index 6d81a88b..fe5b450b 100644 --- a/js/web-server.js +++ b/js/web-server.js @@ -464,9 +464,16 @@ function addCorsHeaders(req, res) { */ function handleDebug(req, res, next) { if (debug) { + let ext = req.url.split('.').pop(); + let type = { + 'html': 'text/html', + 'js': 'application/javascript' + }[ext] || 'application/unknown'; if (lastmod(req.url)) { + res.setHeader('Content-Type',type); return res.end(fs.readFileSync(req.url)); } else if (lastmod(req.url.substring(1))) { + res.setHeader('Content-Type','application/javascript'); return res.end(fs.readFileSync(req.url.substring(1))); } }