teasing apart monoliths

This commit is contained in:
Stewart Allen 2022-02-17 14:40:51 -05:00
commit 85a58f8f50
8 changed files with 489 additions and 434 deletions

3
app.js
View file

@ -339,6 +339,9 @@ const script = {
"load/file",
"moto/broker",
"moto/webui",
"kiri/consts",
"kiri/utils",
"kiri/api",
"kiri/ui",
"kiri/do",
"kiri/pack",

33
src/kiri/api.js Normal file
View file

@ -0,0 +1,33 @@
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
"use strict";
(function () {
const { kiri } = self;
const { consts } = kiri;
const feature = {
seed: true, // seed profiles on first use
meta: true, // show selected widget metadata
frame: true, // receive frame events
alert_event: false, // emit alerts as events instead of display
controls: true, // show or not side menus
device_filter: undefined, // function to limit devices shown
drop_group: undefined, // optional array to group multi drop
drop_layout: true, // layout on new drop
hover: false, // when true fires mouse hover events
hoverAdds: false, // when true only searches widget additions
on_key: undefined, // function override default key handlers
on_load: undefined, // function override file drop loads
on_add_stl: undefined, // legacy override stl drop loads
work_alerts: true, // allow disabling work progress alerts
modes: [ "fdm", "sla", "cam", "laser" ], // enable device modes
pmode: consts.PMODES.SPEED // preview modes
};
const api = kiri.api = {
feature
};
})();

View file

@ -251,18 +251,6 @@
normalize,
device_from_code,
fill_cull_once,
// ---------------
MODES: {
FDM: 1, // fused deposition modeling (also FFF)
LASER: 2, // laser cutters
CAM: 3, // 3 axis milling/machining
SLA: 4 // cured resin printers
},
VIEWS: {
ARRANGE: 1,
SLICE: 2,
PREVIEW: 3
},
// --------------- device and process defaults
defaults: {
fdm:{

133
src/kiri/consts.js Normal file
View file

@ -0,0 +1,133 @@
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
"use strict";
(function () {
const { kiri } = self;
const COLOR = {
wireframe: 0x444444,
wireframe_opacity: 0.25,
selected: [ 0xbbff00, 0xbbee00, 0xbbdd00, 0xbb9900 ],
deselected: [ 0xffff00, 0xffdd00, 0xffbb00, 0xff9900 ],
slicing: 0xffaaaa,
preview_opacity: 0.0,
model_opacity: 1.0,
slicing_opacity: 0.5,
sliced_opacity: 0.0,
cam_preview: 0x0055bb,
cam_preview_opacity: 0.25,
cam_sliced_opacity: 0.25
};
const LISTS = {
shell: [
{ name: "in-out" },
{ name: "out-in" },
],
start: [
{ name: "last" },
{ name: "center" },
{ name: "origin" },
],
infill: [
{ name: "hex" },
{ name: "grid" },
// { name: "cubic" },
{ name: "linear" },
{ name: "triangle" },
{ name: "gyroid" },
{ name: "vase" }
],
units: [
{ name: "mm" },
{ name: "in" }
],
antialias: [
{ name: "1", id: 1 },
{ name: "2", id: 2 },
{ name: "4", id: 4 },
{ name: "8", id: 8 }
],
detail: [
{ name: "100" },
{ name: "75" },
{ name: "50" },
{ name: "25" },
],
linetype: [
{ name: "path" },
{ name: "flat" },
{ name: "line" }
],
filasrc: [
{ name: "direct" },
{ name: "palette3" }
],
animesh: [
{ name: "100" },
{ name: "200" },
{ name: "300" },
{ name: "400" },
{ name: "500" },
{ name: "600" },
{ name: "700" },
{ name: "800" },
{ name: "900" }
],
trace: [
{ name: "follow" },
{ name: "clear" }
],
traceoff: [
{ name: "center" },
{ name: "inside" },
{ name: "outside" }
],
zanchor: [
{ name: "top" },
{ name: "middle" },
{ name: "bottom" }
],
regaxis: [
{ name: "X" },
{ name: "Y" },
{ name: "-" }
],
regpoints: [
{ name: "2" },
{ name: "3" }
],
};
// primary device mode
const MODES = {
FDM: 1, // fused deposition modeling (also FFF)
LASER: 2, // laser cutters
CAM: 3, // 3 axis milling/machining
SLA: 4 // cured resin printers
};
// view mode within device mode
const VIEWS = {
ARRANGE: 1,
SLICE: 2,
PREVIEW: 3
};
// preview modes
const PMODES = {
SPEED: 1,
TOOLS: 2
};
kiri.consts = {
PMODES,
COLOR,
LISTS,
MODES,
VIEWS,
};
})();

View file

@ -2374,7 +2374,7 @@
if (et.tagName != 'CANVAS' && et.id != 'context-menu') {
return;
}
let full = API.view.isArrange();
let full = API.view.is_arrange();
for (let key of ["layflat","mirror","duplicate"]) {
$(`context-${key}`).disabled = !full;
}
@ -2667,8 +2667,8 @@
$('rot_z_gt').onclick = () => { API.selection.rotate(0,0,-d) };
// rendering options
$('render-hide').onclick = () => { API.view.wireframe(false, 0, 0); };
$('render-ghost').onclick = () => { API.view.wireframe(false, 0, API.view.isArrange() ? 0.4 : 0.25); };
$('render-wire').onclick = () => { API.view.wireframe(true, 0, API.space.isDark() ? 0.25 : 0.5); };
$('render-ghost').onclick = () => { API.view.wireframe(false, 0, API.view.is_arrange() ? 0.4 : 0.25); };
$('render-wire').onclick = () => { API.view.wireframe(true, 0, API.space.is_dark() ? 0.25 : 0.5); };
$('render-solid').onclick = () => { API.view.wireframe(false, 0, 1); };
// mesh buttons
$('mesh-heal').onclick = () => { API.widgets.heal() };

File diff suppressed because it is too large Load diff

57
src/kiri/utils.js Normal file
View file

@ -0,0 +1,57 @@
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
"use strict";
(function () {
const { kiri, moto } = self;
function parseOpt(ov) {
let opt = {}, kv, kva;
// handle kiri legacy and proper url encoding better
ov.replace(/&/g,',').split(',').forEach(function(el) {
kv = decodeURIComponent(el).split(':');
if (kv.length === 2) {
kva = opt[kv[0]] = opt[kv[0]] || [];
kva.push(decodeURIComponent(kv[1]));
}
});
return opt;
}
function encodeOpt(opt) {
let out = [];
Object.keys(opt).forEach(key => {
if (key === 'ver') return;
let val = opt[key];
out.push(encodeURIComponent(key) + ":" + encodeURIComponent(val));
});
return out.length ? '?' + out.join(',') : '';
}
function ajax(url, fn, rt, po, hd) {
return new moto.Ajax(fn, rt).request(url, po, hd);
}
function o2js(o,def) {
return o ? JSON.stringify(o) : def || null;
}
function js2o(s,def) {
try {
return s ? JSON.parse(s) : def || null;
} catch (e) {
console.log({malformed_json:s});
return def || null;
}
}
kiri.utils = {
parseOpt,
encodeOpt,
ajax,
o2js,
js2o
};
})();

View file

@ -976,7 +976,7 @@ console.log/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
let wire = widget.wire = new THREE.Mesh(mesh.geometry.shallowClone(), mat);
mesh.add(wire);
}
if (KIRI.api.view.get() === KIRI.conf.VIEWS.ARRANGE) {
if (KIRI.api.view.get() === KIRI.consts.VIEWS.ARRANGE) {
this.setColor(this.color);
} else {
this.setColor(0x888888,undefined,false);