Really Raw version of hierarchy documentation.

This commit is contained in:
kiruma524 2021-08-10 13:21:35 +03:00
parent 052336700a
commit 004cdc049b
5 changed files with 35 additions and 7 deletions

View File

@ -14,6 +14,6 @@ The actual layering scheme is more complicated. All objects support styling. The
### Intermediate representation ### Intermediate representation
An important thing about VisionForge is that it does not strictly bound to a single format representation. An important thing about VisionForge is that it does not strictly bound to a single format representation.
### Kotlin DSL for creating vision-graphs ### Kotlin DSL for creating vision-graphs

32
docs/hierarchy.md Normal file
View File

@ -0,0 +1,32 @@
# Hierarchy
![](../docs/images/hierarchy.png)
### Vision
* function `getProperty(name: Name, inherit: Boolean, includeStyles: Boolean, includeDefaults: Boolean)`.
It gets properties of element with `name` identification.
`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)`
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.
### About properties
**Properties have to be set in particular order:**
* styles
* prototypes
* parent
* parent's styles
* defaults
## Inheritance
Inheritance is a very useful ability of `children` elements to get the same property in default as his parent does have (to 'inherit' it).

BIN
docs/images/hierarchy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -5,6 +5,7 @@ interface Vision{
val parent: Vision? val parent: Vision?
fun getProperty(name): MetaItem? fun getProperty(name): MetaItem?
fun setProperty(name, value) fun setProperty(name, value)
} }
class VisionBase{ class VisionBase{

View File

@ -17,11 +17,6 @@ import space.kscience.dataforge.values.ValueType
import space.kscience.visionforge.Vision.Companion.STYLE_KEY import space.kscience.visionforge.Vision.Companion.STYLE_KEY
import kotlin.jvm.Synchronized import kotlin.jvm.Synchronized
internal data class PropertyListener(
val owner: Any? = null,
val action: (name: Name) -> Unit,
)
/** /**
* A full base implementation for a [Vision] * A full base implementation for a [Vision]
* @param properties Object own properties excluding styles and inheritance * @param properties Object own properties excluding styles and inheritance
@ -43,7 +38,7 @@ public open class VisionBase(
} }
/** /**
* A fast accessor method to get own property (no inheritance or styles * A fast accessor method to get own property (no inheritance or styles)
*/ */
override fun getOwnProperty(name: Name): MetaItem? = if (name == Name.EMPTY) { override fun getOwnProperty(name: Name): MetaItem? = if (name == Name.EMPTY) {
properties?.asMetaItem() properties?.asMetaItem()