Raw version of hierarchy.md #64
@ -65,6 +65,13 @@ To learn more about DataForge, please consult the following URLs:
|
|||||||
## Modules contained in this repository
|
## Modules contained in this repository
|
||||||
|
|
||||||
### visionforge-core
|
### visionforge-core
|
||||||
|
> Core classes, algebra definitions, basic linear algebra
|
||||||
|
>
|
||||||
|
> **Maturity**: DEVELOPMENT
|
||||||
|
>
|
||||||
|
> **Features:**
|
||||||
|
> - [vision](visionforge-core/src/commonMain/kotlin/space/kscience/visionforge/Vision.kt) : an architecture of visions.
|
||||||
|
<hr/>
|
||||||
|
|
||||||
Contains a general hierarchy of classes and interfaces useful for visualization.
|
Contains a general hierarchy of classes and interfaces useful for visualization.
|
||||||
This module is not specific to 3D-visualization.
|
This module is not specific to 3D-visualization.
|
||||||
|
@ -36,7 +36,6 @@ apiValidation {
|
|||||||
ignoredPackages.add("info.laht.threekt")
|
ignoredPackages.add("info.laht.threekt")
|
||||||
}
|
}
|
||||||
|
|
||||||
//workaround for https://youtrack.jetbrains.com/issue/KT-48273
|
|
||||||
rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin::class.java) {
|
rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin::class.java) {
|
||||||
rootProject.the<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension>().versions.webpackDevServer.version = "4.0.0-rc.0"
|
rootProject.the<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension>().versions.webpackDevServer.version = "4.0.0-rc.0"
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,43 @@
|
|||||||
# Hierarchy
|
# Hierarchy
|
||||||
|
|
||||||
![](../docs/images/hierarchy.png)
|
![](../docs/images/hierarchy.png)
|
||||||
**the image will be changed**
|
|
||||||
|
|
||||||
### Vision
|
### Vision
|
||||||
|
* function `getPropertyValue(name: Name, inherit: Boolean = false, includeStyles: Boolean = true, includeDefaults: Boolean = true)` - get property value with given layer flags.
|
||||||
|
|
||||||
* function `getProperty(name: Name, inherit: Boolean, includeStyles: Boolean, includeDefaults: Boolean)`.
|
* function `setProperty(name: Name, item: Any?)` - a convenient method to set property node or value. If `item` is null, then node is removed, not a value
|
||||||
|
Sets the `item` property to the element with the `name` identification.
|
||||||
|
|
||||||
It gets properties of element with `name` identification.
|
### VisionBase
|
||||||
`inherit` — toggles parent node property lookup. Null means inference from descriptor. Default is false.
|
|
||||||
`includeStyles` — toggles inclusion of. Null means inference from descriptor. Default is true.
|
|
||||||
`includeDefaults` — default is false.
|
|
||||||
|
|
||||||
* function `setProperty(name: Name, item: MetaItem?, notify: Boolean = true)`
|
Basic vision implementation
|
||||||
|
|
||||||
Sets the `item` property to the element with the `name` identification. `notify` is a value which toggles the necessity of the change notification. Default is true.
|
### VisionGroup
|
||||||
|
|
||||||
|
A group of Visions.
|
||||||
|
|
||||||
|
### MutableVisionGroup
|
||||||
|
|
||||||
|
Mutable version of VisionGroup.
|
||||||
|
|
||||||
|
low structure changes of this group. Unconsumed changes are discarded.
|
||||||
|
|
||||||
|
### Solid
|
||||||
|
|
||||||
|
Interface for 3-dimensional Vision.
|
||||||
|
|
||||||
|
### SolidGroup
|
||||||
|
|
||||||
|
* function `getPrototype(name: Name)` - get a prototype redirecting the request to the parent if prototype is not found. If prototype is a ref, then it is unfolded automatically.
|
||||||
|
|
||||||
|
* function `prototypes(builder: VisionContainerBuilder<Solid>.() -> Unit)` - create or edit prototype node as a group.
|
||||||
|
|
||||||
|
### SolidReferenceGroup
|
||||||
|
|
||||||
|
A reference Solid to reuse a template object.
|
||||||
|
|
||||||
|
### RootVisionGroup
|
||||||
|
|
||||||
|
Non-serializable root group used to propagate manager to its children.
|
||||||
|
|
||||||
|
* function Vision.root(manager: VisionManager) - designate this [VisionGroup] as a root group and assign a [VisionManager] as its parent.
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 98 KiB |
@ -65,4 +65,6 @@ Properties, which can or cannot be inherited, are these:
|
|||||||
![](../docs/images/inheritance-2-2-5.png)
|
![](../docs/images/inheritance-2-2-5.png)
|
||||||
|
|
||||||
* `rotation` - rotation of an element. Here, it is set by `x` value. It is inheritable and unable to be changed in `children` elements.
|
* `rotation` - rotation of an element. Here, it is set by `x` value. It is inheritable and unable to be changed in `children` elements.
|
||||||
* `position` - position of an element, cannot be inherited.
|
|
||||||
|
* `position` — position of an element, cannot be inherited.
|
||||||
|
|
||||||
|
@ -1,108 +1,124 @@
|
|||||||
@startuml
|
@startuml
|
||||||
'https://plantuml.com/class-diagram
|
'https://plantuml.com/class-diagram
|
||||||
interface Vision
|
|
||||||
|
|
||||||
|
interface Vision{
|
||||||
|
val parent: VisionGroup?
|
||||||
|
fun getPropertyValue(name,inherit,includeStyles,includeDefaults): Value?
|
||||||
|
}
|
||||||
|
|
||||||
interface Solid
|
interface Solid{
|
||||||
Vision <- Solid
|
The base for 3D geometry
|
||||||
|
}
|
||||||
|
Vision <-- Solid
|
||||||
|
|
||||||
|
class VisionGroup{
|
||||||
|
A group of Visions
|
||||||
|
|
||||||
class VisionGroup
|
val children: Map<NameToken, Vision>
|
||||||
|
val defaultTarget: String
|
||||||
|
|
||||||
|
fun content(target): Map<Name, Any>
|
||||||
|
fun get(name: Name): Vision?
|
||||||
|
}
|
||||||
Vision <-- VisionGroup
|
Vision <-- VisionGroup
|
||||||
|
|
||||||
class VisionBase
|
class VisionBase{
|
||||||
Vision <- VisionBase
|
basic vision implementation
|
||||||
|
}
|
||||||
|
Vision <-- VisionBase
|
||||||
|
|
||||||
|
|
||||||
class SolidLabel
|
class SolidLabel
|
||||||
Solid <--- SolidLabel
|
Solid <--- SolidLabel
|
||||||
SolidBase <-- SolidLabel
|
|
||||||
|
|
||||||
class SolidGroup
|
class SolidGroup{
|
||||||
|
var properties: MutableMeta?
|
||||||
|
val children: Map<NameToken, Vision>
|
||||||
|
var prototypes: MutableVisionGroup?
|
||||||
|
|
||||||
|
fun getPrototype(name): Solid?
|
||||||
|
fun prototypes(builder)
|
||||||
|
}
|
||||||
Solid <--- SolidGroup
|
Solid <--- SolidGroup
|
||||||
VisionGroupBase <-- SolidGroup
|
VisionGroupBase <-- SolidGroup
|
||||||
|
|
||||||
class SolidBase
|
|
||||||
Solid <--- SolidBase
|
|
||||||
VisionBase <-- SolidBase
|
|
||||||
|
|
||||||
|
|
||||||
class SphereLayer
|
class SphereLayer
|
||||||
SolidBase <-- SphereLayer
|
Solid <-- SphereLayer
|
||||||
GeometrySolid <-- SphereLayer
|
|
||||||
|
|
||||||
class Sphere
|
class Sphere
|
||||||
SolidBase <-- Sphere
|
Solid <-- Sphere
|
||||||
GeometrySolid <-- Sphere
|
|
||||||
|
|
||||||
class Box
|
class Box
|
||||||
SolidBase <-- Box
|
|
||||||
Hexagon <-- Box
|
Hexagon <-- Box
|
||||||
|
|
||||||
class GenericHexagon
|
class GenericHexagon
|
||||||
SolidBase <-- GenericHexagon
|
|
||||||
Hexagon <-- GenericHexagon
|
Hexagon <-- GenericHexagon
|
||||||
|
|
||||||
class Extruded
|
class Extruded
|
||||||
SolidBase <-- Extruded
|
Solid <-- Extruded
|
||||||
GeometrySolid <-- Extruded
|
|
||||||
|
|
||||||
|
|
||||||
class PolyLine
|
class PolyLine
|
||||||
Solid <--- PolyLine
|
Solid <--- PolyLine
|
||||||
SolidBase <-- PolyLine
|
|
||||||
|
|
||||||
interface GeometrySolid
|
|
||||||
Solid <--- GeometrySolid
|
|
||||||
|
|
||||||
|
|
||||||
interface Hexagon
|
interface Hexagon
|
||||||
GeometrySolid <-- Hexagon
|
Solid <-- Hexagon
|
||||||
|
|
||||||
class ConeSegment
|
class ConeSegment
|
||||||
GeometrySolid <-- ConeSegment
|
Solid <-- ConeSegment
|
||||||
|
|
||||||
class ConeSurface
|
class ConeSurface
|
||||||
GeometrySolid <-- ConeSurface
|
Solid <-- ConeSurface
|
||||||
|
|
||||||
|
|
||||||
class Convex
|
class Convex
|
||||||
Solid <--- Convex
|
Solid <--- Convex
|
||||||
SolidBase <-- Convex
|
|
||||||
|
|
||||||
class Composite
|
class Composite
|
||||||
Solid <--- Composite
|
Solid <--- Composite
|
||||||
SolidBase <-- Composite
|
|
||||||
|
|
||||||
|
|
||||||
interface SolidReference
|
interface SolidReference{
|
||||||
|
val prototype: Solid
|
||||||
|
fun getPropertyValue(name,inherit,includeStyles,includeDefaults): Value?
|
||||||
|
}
|
||||||
VisionGroup <---- SolidReference
|
VisionGroup <---- SolidReference
|
||||||
|
|
||||||
interface MutableVisionGroup
|
class SolidReferenceGroup{
|
||||||
|
val refName: Name
|
||||||
|
var properties: MutableMeta?
|
||||||
|
val prototype: Solid
|
||||||
|
val children: Map<NameToken, Vision>
|
||||||
|
fun getPropertyValue(name,inherit,includeStyles,includeDefaults): Value?
|
||||||
|
}
|
||||||
|
VisionBase <-- SolidReferenceGroup
|
||||||
|
|
||||||
|
interface MutableVisionGroup{
|
||||||
|
fun onStructureChanged(owner, block)
|
||||||
|
fun removeStructureListener(owner)
|
||||||
|
}
|
||||||
VisionGroup <---- MutableVisionGroup
|
VisionGroup <---- MutableVisionGroup
|
||||||
|
|
||||||
class SolidReferenceGroup
|
class VisionGroupBase{
|
||||||
VisionGroup <-- SolidReferenceGroup
|
val children: Map<NameToken, Vision>
|
||||||
Solid <-- SolidReferenceGroup
|
fun set(name: Name?, child: Vision?)
|
||||||
VisionBase <-- SolidReferenceGroup
|
}
|
||||||
SolidReference <-- SolidReferenceGroup
|
|
||||||
|
|
||||||
class ReferenceChild
|
|
||||||
VisionGroup <-- ReferenceChild
|
|
||||||
Solid <-- ReferenceChild
|
|
||||||
SolidReference <-- ReferenceChild
|
|
||||||
|
|
||||||
|
|
||||||
class VisionGroupBase
|
|
||||||
VisionBase <-- VisionGroupBase
|
VisionBase <-- VisionGroupBase
|
||||||
MutableVisionGroup <-- VisionGroupBase
|
MutableVisionGroup <-- VisionGroupBase
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class RootVisionGroup
|
class RootVisionGroup
|
||||||
VisionGroupBase <-- RootVisionGroup
|
VisionGroupBase <-- RootVisionGroup
|
||||||
|
|
||||||
|
class VisionOfPlotly{
|
||||||
class VisionOfPlotly
|
var properties: MutableMeta?
|
||||||
|
val plot: Plot
|
||||||
|
}
|
||||||
VisionBase <-- VisionOfPlotly
|
VisionBase <-- VisionOfPlotly
|
||||||
|
|
||||||
|
class VisionOfMarkup{
|
||||||
|
val format: String
|
||||||
|
var content: String?
|
||||||
|
}
|
||||||
|
VisionBase <-- VisionOfMarkup
|
||||||
@enduml
|
@enduml
|
@ -109,7 +109,7 @@ public fun Vision.getPropertyValue(
|
|||||||
): Value? = getPropertyValue(Name.parse(key), inherit, includeStyles, includeDefaults)
|
): Value? = getPropertyValue(Name.parse(key), inherit, includeStyles, includeDefaults)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A convenience method to set property node or value. If Item is null, then node is removed, not a value
|
* A convenient method to set property node or value. If Item is null, then node is removed, not a value
|
||||||
*/
|
*/
|
||||||
public fun Vision.setProperty(name: Name, item: Any?) {
|
public fun Vision.setProperty(name: Name, item: Any?) {
|
||||||
when (item) {
|
when (item) {
|
||||||
|
@ -26,7 +26,7 @@ public interface PrototypeHolder {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents 3-dimensional Visual Group
|
* Represents 3-dimensional Visual Group
|
||||||
* @param prototypes A container for templates visible inside this group
|
* @param prototypes is a container for templates visible inside this group
|
||||||
*/
|
*/
|
||||||
@Serializable
|
@Serializable
|
||||||
@SerialName("group.solid")
|
@SerialName("group.solid")
|
||||||
|
Loading…
Reference in New Issue
Block a user