forked from kscience/visionforge
Doc updates
This commit is contained in:
parent
6ff8002485
commit
f49ad3ee2c
@ -1,6 +1,6 @@
|
||||
# DataForge Plugins for Visualisation
|
||||
|
||||
This repository contains [DataForge](http://www.inr.ru/~nozik/dataforge/)
|
||||
This repository contains [DataForge](http://npm.mipt.ru/dataforge/)
|
||||
(also [here](https://github.com/mipt-npm/dataforge-core)) components useful for visualization in
|
||||
various scientific applications. Currently, the main application is 3D visualization for accelerator
|
||||
experiments.
|
||||
|
@ -8,7 +8,7 @@ import kotlinx.serialization.Transient
|
||||
|
||||
|
||||
/**
|
||||
* Abstract implementation of group of [VisualObject]
|
||||
* Abstract implementation of mutable group of [VisualObject]
|
||||
*/
|
||||
abstract class AbstractVisualGroup : AbstractVisualObject(), MutableVisualGroup {
|
||||
|
||||
@ -60,6 +60,7 @@ abstract class AbstractVisualGroup : AbstractVisualObject(), MutableVisualGroup
|
||||
}
|
||||
}
|
||||
|
||||
// TODO Consider renaming to `StructureChangeListener` (singular)
|
||||
private data class StructureChangeListeners(val owner: Any?, val callback: (Name, VisualObject?) -> Unit)
|
||||
|
||||
@Transient
|
||||
|
@ -12,6 +12,9 @@ internal data class PropertyListener(
|
||||
val action: (name: Name, oldItem: MetaItem<*>?, newItem: MetaItem<*>?) -> Unit
|
||||
)
|
||||
|
||||
/**
|
||||
* Abstract implementation of [VisualObject]
|
||||
*/
|
||||
abstract class AbstractVisualObject : VisualObject {
|
||||
|
||||
@Transient
|
||||
@ -19,6 +22,9 @@ abstract class AbstractVisualObject : VisualObject {
|
||||
|
||||
abstract override var properties: Config?
|
||||
|
||||
/**
|
||||
* Style(s) of the object
|
||||
*/
|
||||
override var style: List<String>
|
||||
get() = properties?.let { it[STYLE_KEY].stringList } ?: emptyList()
|
||||
set(value) {
|
||||
|
@ -3,7 +3,8 @@ package hep.dataforge.vis.common
|
||||
import kotlin.math.max
|
||||
|
||||
/**
|
||||
* Taken from https://github.com/markaren/three.kt/blob/master/threejs-wrapper/src/main/kotlin/info/laht/threekt/math/ColorConstants.kt
|
||||
* Definitions of common colors. Taken from
|
||||
* https://github.com/markaren/three.kt/blob/master/threejs-wrapper/src/main/kotlin/info/laht/threekt/math/ColorConstants.kt
|
||||
*/
|
||||
object Colors {
|
||||
const val aliceblue = 0xF0F8FF
|
||||
@ -177,11 +178,17 @@ object Colors {
|
||||
const val yellow = 0xFFFF00
|
||||
const val yellowgreen = 0x9ACD32
|
||||
|
||||
/**
|
||||
* Convert Int color to string of format #rrggbb
|
||||
*/
|
||||
fun rgbToString(rgb: Int): String {
|
||||
val string = rgb.toString(16).padStart(6, '0')
|
||||
return "#" + string.substring(max(0, string.length - 6))
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert three bytes representing color to string of format #rrggbb
|
||||
*/
|
||||
fun rgbToString(red: UByte, green: UByte, blue: UByte): String {
|
||||
fun colorToString(color: UByte): String{
|
||||
return color.toString(16).padStart(2,'0')
|
||||
|
@ -4,6 +4,9 @@ import hep.dataforge.meta.Meta
|
||||
import hep.dataforge.names.*
|
||||
import hep.dataforge.provider.Provider
|
||||
|
||||
/**
|
||||
* Represents a group of [VisualObject] instances
|
||||
*/
|
||||
interface VisualGroup : Provider, Iterable<VisualObject>, VisualObject {
|
||||
/**
|
||||
* A map of top level named children
|
||||
@ -52,6 +55,9 @@ interface VisualGroup : Provider, Iterable<VisualObject>, VisualObject {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Mutable version of [VisualGroup]
|
||||
*/
|
||||
interface MutableVisualGroup : VisualGroup {
|
||||
|
||||
/**
|
||||
|
@ -67,9 +67,19 @@ interface VisualObject : MetaRepr, Configurable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get [VisualObject] property using key as a String
|
||||
*/
|
||||
fun VisualObject.getProperty(key: String, inherit: Boolean = true): MetaItem<*>? = getProperty(key.toName(), inherit)
|
||||
|
||||
/**
|
||||
* Set [VisualObject] property using key as a String
|
||||
*/
|
||||
fun VisualObject.setProperty(key: String, value: Any?) = setProperty(key.toName(), value)
|
||||
|
||||
/**
|
||||
* Apply style to [VisualObject] by adding it to the [style] list
|
||||
*/
|
||||
fun VisualObject.applyStyle(name: String) {
|
||||
style = style + name
|
||||
}
|
@ -3,12 +3,18 @@ package hep.dataforge.vis.common
|
||||
import hep.dataforge.descriptors.ValueDescriptor
|
||||
import hep.dataforge.meta.*
|
||||
|
||||
/**
|
||||
* Extension property to access the "widget" key of [ValueDescriptor]
|
||||
*/
|
||||
var ValueDescriptor.widget: Meta
|
||||
get() = this.config["widget"].node?: EmptyMeta
|
||||
set(value) {
|
||||
this.config["widget"] = value
|
||||
}
|
||||
|
||||
/**
|
||||
* Extension property to access the "widget.type" key of [ValueDescriptor]
|
||||
*/
|
||||
var ValueDescriptor.widgetType: String?
|
||||
get() = this["widget.type"].string
|
||||
set(value) {
|
||||
|
@ -62,7 +62,7 @@ class Extruded(
|
||||
override fun <T : Any> toGeometry(geometryBuilder: GeometryBuilder<T>) {
|
||||
val shape: Shape2D = shape
|
||||
|
||||
if (shape.size < 3) error("Extruded shape requires more than points per layer")
|
||||
if (shape.size < 3) error("Extruded shape requires more than 2 points per layer")
|
||||
|
||||
/**
|
||||
* Expand the shape for specific layers
|
||||
|
@ -27,6 +27,9 @@ import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.UseSerializers
|
||||
import kotlin.collections.set
|
||||
|
||||
/**
|
||||
* Represents 3-dimensional Visual Group
|
||||
*/
|
||||
@Serializable
|
||||
class VisualGroup3D : AbstractVisualGroup(), VisualObject3D {
|
||||
/**
|
||||
|
@ -14,6 +14,9 @@ import hep.dataforge.vis.spatial.VisualObject3D.Companion.SELECTED_KEY
|
||||
import hep.dataforge.vis.spatial.VisualObject3D.Companion.VISIBLE_KEY
|
||||
import kotlinx.serialization.UseSerializers
|
||||
|
||||
/**
|
||||
* Interface for 3-dimensional [VisualObject]
|
||||
*/
|
||||
interface VisualObject3D : VisualObject {
|
||||
var position: Point3D?
|
||||
var rotation: Point3D?
|
||||
|
@ -6,7 +6,7 @@ import info.laht.threekt.core.BufferGeometry
|
||||
import info.laht.threekt.objects.Mesh
|
||||
|
||||
/**
|
||||
* This should be inner, becaulse it uses object builder
|
||||
* This should be inner, because it uses object builder
|
||||
*/
|
||||
class ThreeCompositeFactory(val three: ThreePlugin) : MeshThreeFactory<Composite>(Composite::class) {
|
||||
|
||||
|
@ -16,6 +16,9 @@ import info.laht.threekt.math.Matrix4
|
||||
import info.laht.threekt.math.Vector3
|
||||
import info.laht.threekt.objects.Mesh
|
||||
|
||||
/**
|
||||
* Constructive Solid Geometry
|
||||
*/
|
||||
open external class CSG {
|
||||
open var polygons: Array<Polygon>
|
||||
open fun clone(): CSG
|
||||
|
Loading…
Reference in New Issue
Block a user