Added JSRoot full dependency

This commit is contained in:
Alexander Nozik 2019-04-04 09:23:00 +03:00
parent 193ae96425
commit 9f80e0894b
7 changed files with 252 additions and 248 deletions

View File

@ -8,8 +8,10 @@ import hep.dataforge.vis.DisplayLeaf
import hep.dataforge.vis.DisplayObject
import hep.dataforge.vis.int
import hep.dataforge.vis.spatial.MeshThreeFactory
import hep.dataforge.vis.spatial.jsroot.createCubeBuffer
import hep.dataforge.vis.spatial.jsroot.createGeometry
import hep.dataforge.vis.spatial.jsroot.createTubeBuffer
import hep.dataforge.vis.spatial.jsroot.createXtruBuffer
import info.laht.threekt.core.BufferGeometry
@ -36,7 +38,7 @@ object ThreeGDMLFactory : MeshThreeFactory<GDMLShape>(GDMLShape::class) {
override fun buildGeometry(obj: GDMLShape): BufferGeometry {
return when (obj.shape) {
is GDMLBox -> createTubeBuffer(
is GDMLBox -> createCubeBuffer(
obj.shape.config.toJsRoot()?.toDynamic(),
obj.facesLimit
)
@ -46,7 +48,6 @@ object ThreeGDMLFactory : MeshThreeFactory<GDMLShape>(GDMLShape::class) {
)
is GDMLXtru -> {
val meta = buildMeta {
"_typename" to "TGeoXtru"
val vertices = obj.shape.verteces
val zs = obj.shape.sections.sortedBy { it.zOrder!! }
"fNz" to zs.size
@ -58,7 +59,7 @@ object ThreeGDMLFactory : MeshThreeFactory<GDMLShape>(GDMLShape::class) {
"fZ" to zs.map { it.zPosition!! }
"fScale" to zs.map { it.scalingFactor }
}
createGeometry(meta.toDynamic(), obj.facesLimit)
createXtruBuffer(meta.toDynamic(), obj.facesLimit)
}
is GDMLUnion -> {
val meta = buildMeta {

View File

@ -0,0 +1,6 @@
@file:JsModule("JSRootCore.js")
@file:JsNonModule
package hep.dataforge.vis.spatial.jsroot
external fun parse(obj: String): dynamic

View File

@ -3,7 +3,6 @@ package hep.dataforge.vis.spatial.jsroot
import hep.dataforge.context.Global
import hep.dataforge.meta.EmptyMeta
import hep.dataforge.vis.ApplicationBase
import hep.dataforge.vis.require
import hep.dataforge.vis.spatial.ThreeOutput
import hep.dataforge.vis.spatial.render
import org.w3c.dom.HTMLDivElement
@ -20,7 +19,8 @@ class JSRootDemoApp : ApplicationBase() {
override val stateKeys: List<String> = emptyList()
override fun start(state: Map<String, Any>) {
require("JSRootGeoBase.js")
// require("JSRootGeoBase.js")
// require("JSRootCore.js")
//TODO remove after DI fix
@ -68,9 +68,8 @@ class JSRootDemoApp : ApplicationBase() {
println("started")
renderer.render {
val json = JSON.parse<Any>(string).asDynamic()
val obj = json.fVolumes.arr[0]
JSRootObject(this, EmptyMeta, obj).also { addChild(it) }
val json = parse(string)
JSRootObject(this, EmptyMeta, json).also { addChild(it) }
}
}
readAsText(file)

View File

@ -15,5 +15,3 @@ external fun createTubeBuffer(shape: dynamic, limit: Int): BufferGeometry
external fun createXtruBuffer(shape: dynamic, limit: Int): BufferGeometry
external fun build(obj: dynamic, opt: dynamic): Object3D
external fun buildFromJson(obj:dynamic, opt: dynamic): Object3D

View File

@ -24,7 +24,7 @@ object ThreeJSRootObjectFactory : ThreeFactory<JSRootObject> {
override val type = JSRootObject::class
override fun invoke(obj: JSRootObject): Object3D {
return buildFromJson(obj.data, obj.options?.toDynamic())
return build(obj.data, obj.options?.toDynamic())
}
}

View File

@ -4,7 +4,12 @@
} else if (typeof exports === 'object' && typeof module !== 'undefined') {
factory(exports);
} else {
JSROOT = factory();
if (typeof JSROOT != 'undefined')
throw new Error("JSROOT is already defined", "JSRootCore.js");
JSROOT = {};
factory(JSROOT);
}
}(function (JSROOT) {
"use strict";
@ -479,7 +484,7 @@
*/
JSROOT.parse = function (json) {
if (!json) return null;
var obj = JSON.parse(json);
let obj = JSON.parse(json);
if (obj) obj = this.JSONR_unref(obj);
return obj;
};

File diff suppressed because it is too large Load Diff