From 545753b14b798ce1629e0afc3643510cdda9935c Mon Sep 17 00:00:00 2001 From: Alexander Nozik Date: Tue, 2 Mar 2021 16:33:29 +0300 Subject: [PATCH] cleanup --- build.gradle.kts | 2 +- .../dataforge/vision/gdml/demo/readFile.kt | 17 +- .../dataforge/vision/gdml/demo/saveToJson.kt | 12 +- .../VisionForgePlayGroundForJupyter.kt | 4 +- .../src/jvmMain/kotlin/serverExtensions.kt | 2 +- .../vision/html/HtmlVisionFragment.kt | 2 +- .../kotlin/hep/dataforge/vision/html/Page.kt | 4 +- .../hep/dataforge/vision/gdml/gdmlJVM.kt | 17 +- .../dataforge/vision/gdml/TestConvertor.kt | 8 + .../src/jvmTest/resources/gdml/babyIAXO.gdml | 1065 +++++++++++++++++ .../vision/three/server/serverExtensions.kt | 2 +- 11 files changed, 1098 insertions(+), 37 deletions(-) create mode 100644 visionforge-gdml/src/jvmTest/resources/gdml/babyIAXO.gdml diff --git a/build.gradle.kts b/build.gradle.kts index 5d5b70f3..47055ee3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -22,7 +22,7 @@ allprojects { } group = "hep.dataforge" - version = "0.2.0-dev-5" + version = "0.2.0-dev-6" } val githubProject by extra("visionforge") diff --git a/demo/gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/demo/readFile.kt b/demo/gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/demo/readFile.kt index 754de41f..2f8ec999 100644 --- a/demo/gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/demo/readFile.kt +++ b/demo/gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/demo/readFile.kt @@ -3,9 +3,9 @@ package hep.dataforge.vision.gdml.demo import hep.dataforge.misc.DFExperimental import hep.dataforge.vision.Vision import hep.dataforge.vision.VisionManager -import hep.dataforge.vision.gdml.readFile import hep.dataforge.vision.gdml.toVision import space.kscience.gdml.Gdml +import space.kscience.gdml.decodeFromFile import java.io.File import java.util.zip.GZIPInputStream import java.util.zip.ZipInputStream @@ -13,20 +13,7 @@ import java.util.zip.ZipInputStream @OptIn(DFExperimental::class) fun VisionManager.readFile(file: File): Vision = when { file.extension == "gdml" || file.extension == "xml" -> { - Gdml.readFile(file.toPath()).toVision { -// lUnit = LUnit.CM -// -// solidConfiguration = { parent, solid -> -// if (solid.name == "cave") { -// setItem(SolidMaterial.MATERIAL_WIREFRAME_KEY, true.asValue()) -// } -// if (parent.physVolumes.isNotEmpty()) { -// useStyle("opaque") { -// SolidMaterial.MATERIAL_OPACITY_KEY put 0.3 -// } -// } -// } - } + Gdml.decodeFromFile(file.toPath(),true).toVision() } file.extension == "json" -> decodeFromString(file.readText()) file.name.endsWith("json.zip") -> { diff --git a/demo/gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/demo/saveToJson.kt b/demo/gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/demo/saveToJson.kt index 9f99aec3..09568da2 100644 --- a/demo/gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/demo/saveToJson.kt +++ b/demo/gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/demo/saveToJson.kt @@ -1,21 +1,21 @@ package hep.dataforge.vision.gdml.demo -import hep.dataforge.vision.gdml.readFile import hep.dataforge.vision.gdml.toVision import hep.dataforge.vision.solid.Solids import space.kscience.gdml.Gdml import space.kscience.gdml.LUnit +import space.kscience.gdml.decodeFromFile import java.io.File import java.nio.file.Paths fun main(args: Array) { - require(args.isNotEmpty()){"At least one argument is required"} + require(args.isNotEmpty()) { "At least one argument is required" } val inputFileName = args[0] - require(inputFileName.endsWith(".gdml")){"GDML required"} - val outputFileName = args.getOrNull(1)?:inputFileName.replace(".gdml",".json") + require(inputFileName.endsWith(".gdml")) { "GDML required" } + val outputFileName = args.getOrNull(1) ?: inputFileName.replace(".gdml", ".json") - val gdml = Gdml.readFile(Paths.get(inputFileName)) - //GDML.readFile(Paths.get("D:\\Work\\Projects\\visionforge\\visionforge-spatial-gdml\\src\\jvmTest\\resources\\gdml\\simple1.gdml")) + val gdml = Gdml.decodeFromFile(Paths.get(inputFileName), true) + //GDML.readFile(Paths.get("D:\\Work\\Projects\\visionforge\\visionforge-spatial-gdml\\src\\jvmTest\\resources\\gdml\\simple1.gdml")) val vision = gdml.toVision { lUnit = LUnit.CM diff --git a/demo/jupyter-playground/src/main/kotlin/hep/dataforge/playground/VisionForgePlayGroundForJupyter.kt b/demo/jupyter-playground/src/main/kotlin/hep/dataforge/playground/VisionForgePlayGroundForJupyter.kt index f9b33877..f9ddea35 100644 --- a/demo/jupyter-playground/src/main/kotlin/hep/dataforge/playground/VisionForgePlayGroundForJupyter.kt +++ b/demo/jupyter-playground/src/main/kotlin/hep/dataforge/playground/VisionForgePlayGroundForJupyter.kt @@ -60,7 +60,9 @@ internal class VisionForgePlayGroundForJupyter : JupyterIntegration() { "kscience.plotly.*", "kscience.plotly.models.*", "kotlinx.html.*", - "hep.dataforge.vision.solid.*" + "hep.dataforge.vision.solid.*", + "hep.dataforge.vision.html.Page", + "hep.dataforge.vision.html.page" ) import() diff --git a/demo/playground/src/jvmMain/kotlin/serverExtensions.kt b/demo/playground/src/jvmMain/kotlin/serverExtensions.kt index fe77564d..d5bfc0b4 100644 --- a/demo/playground/src/jvmMain/kotlin/serverExtensions.kt +++ b/demo/playground/src/jvmMain/kotlin/serverExtensions.kt @@ -26,7 +26,7 @@ public fun VisionForge.makeVisionFile( resourceLocation: ResourceLocation = ResourceLocation.SYSTEM, show: Boolean = true, ): Unit { - val actualPath = page(title, content).makeFile(path) { actualPath -> + val actualPath = page(title, content = content).makeFile(path) { actualPath -> mapOf("threeJs" to scriptHeader("js/visionforge-playground.js", actualPath, resourceLocation)) } if (show) Desktop.getDesktop().browse(actualPath.toFile().toURI()) diff --git a/visionforge-core/src/commonMain/kotlin/hep/dataforge/vision/html/HtmlVisionFragment.kt b/visionforge-core/src/commonMain/kotlin/hep/dataforge/vision/html/HtmlVisionFragment.kt index 31239c71..4de488c8 100644 --- a/visionforge-core/src/commonMain/kotlin/hep/dataforge/vision/html/HtmlVisionFragment.kt +++ b/visionforge-core/src/commonMain/kotlin/hep/dataforge/vision/html/HtmlVisionFragment.kt @@ -5,7 +5,7 @@ import hep.dataforge.vision.VisionForge import kotlinx.html.FlowContent import kotlinx.html.TagConsumer -public typealias HtmlFragment = TagConsumer<*>.()->Unit +public typealias HtmlFragment = TagConsumer<*>.() -> Unit public fun TagConsumer<*>.fragment(fragment: HtmlFragment) { fragment() diff --git a/visionforge-core/src/commonMain/kotlin/hep/dataforge/vision/html/Page.kt b/visionforge-core/src/commonMain/kotlin/hep/dataforge/vision/html/Page.kt index 86ce5140..f66d38be 100644 --- a/visionforge-core/src/commonMain/kotlin/hep/dataforge/vision/html/Page.kt +++ b/visionforge-core/src/commonMain/kotlin/hep/dataforge/vision/html/Page.kt @@ -32,7 +32,7 @@ public data class Page( @DFExperimental public fun VisionForge.page( - title: String, - content: HtmlVisionFragment, + title: String = "VisionForge page", vararg headers: Pair, + content: HtmlVisionFragment, ): Page = Page(context, title, mapOf(*headers), content) \ No newline at end of file diff --git a/visionforge-gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/gdmlJVM.kt b/visionforge-gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/gdmlJVM.kt index 9227c699..e9fd2a58 100644 --- a/visionforge-gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/gdmlJVM.kt +++ b/visionforge-gdml/src/jvmMain/kotlin/hep/dataforge/vision/gdml/gdmlJVM.kt @@ -1,20 +1,19 @@ package hep.dataforge.vision.gdml import hep.dataforge.vision.solid.SolidGroup -import nl.adaptivity.xmlutil.StAXReader import space.kscience.gdml.Gdml -import java.nio.file.Files +import space.kscience.gdml.decodeFromFile import java.nio.file.Path import java.util.concurrent.atomic.AtomicInteger public actual typealias Counter = AtomicInteger -public fun Gdml.Companion.readFile(file: Path): Gdml { - val xmlReader = StAXReader(Files.newInputStream(file), "UTF-8") - return format.decodeFromReader(Gdml.serializer(), xmlReader) -} - -public fun SolidGroup.gdml(file: Path, key: String = "", transformer: GdmlTransformerSettings.() -> Unit = {}) { - val gdml = Gdml.readFile(file) +public fun SolidGroup.gdml( + file: Path, + key: String = "", + usePreprocessor: Boolean = false, + transformer: GdmlTransformerSettings.() -> Unit = {}, +) { + val gdml = Gdml.decodeFromFile(file, usePreprocessor) gdml(gdml, key, transformer) } diff --git a/visionforge-gdml/src/jvmTest/kotlin/hep/dataforge/vision/gdml/TestConvertor.kt b/visionforge-gdml/src/jvmTest/kotlin/hep/dataforge/vision/gdml/TestConvertor.kt index 7ee583f0..1d199c0d 100644 --- a/visionforge-gdml/src/jvmTest/kotlin/hep/dataforge/vision/gdml/TestConvertor.kt +++ b/visionforge-gdml/src/jvmTest/kotlin/hep/dataforge/vision/gdml/TestConvertor.kt @@ -34,4 +34,12 @@ class TestConvertor { val vision = gdml.toVision() //println(SolidManager.encodeToString(vision)) } + + @Test + fun testIaxo() { + val stream = javaClass.getResourceAsStream("/gdml/babyIAXO.gdml")!! + val gdml = Gdml.decodeFromStream(stream, true) + val vision = gdml.toVision() + println(Solids.encodeToString(vision)) + } } \ No newline at end of file diff --git a/visionforge-gdml/src/jvmTest/resources/gdml/babyIAXO.gdml b/visionforge-gdml/src/jvmTest/resources/gdml/babyIAXO.gdml new file mode 100644 index 00000000..35fd1d7a --- /dev/null +++ b/visionforge-gdml/src/jvmTest/resources/gdml/babyIAXO.gdml @@ -0,0 +1,1065 @@ + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/visionforge-threejs/visionforge-threejs-server/src/jvmMain/kotlin/hep/dataforge/vision/three/server/serverExtensions.kt b/visionforge-threejs/visionforge-threejs-server/src/jvmMain/kotlin/hep/dataforge/vision/three/server/serverExtensions.kt index 7d78e2ea..1a7639d9 100644 --- a/visionforge-threejs/visionforge-threejs-server/src/jvmMain/kotlin/hep/dataforge/vision/three/server/serverExtensions.kt +++ b/visionforge-threejs/visionforge-threejs-server/src/jvmMain/kotlin/hep/dataforge/vision/three/server/serverExtensions.kt @@ -23,7 +23,7 @@ public fun VisionForge.makeThreeJsFile( resourceLocation: ResourceLocation = ResourceLocation.SYSTEM, show: Boolean = true, ): Unit { - val actualPath = page(title, content).makeFile(path) { actualPath -> + val actualPath = page(title, content = content).makeFile(path) { actualPath -> mapOf("threeJs" to scriptHeader("js/visionforge-three.js", actualPath, resourceLocation)) } if (show) Desktop.getDesktop().browse(actualPath.toFile().toURI())