New images, raw version of inheritance.md, hierarchy.md, and Vision.puml #60

Merged
kiruma524 merged 14 commits from dev into dev 2021-08-17 09:30:09 +03:00
5 changed files with 35 additions and 7 deletions
Showing only changes of commit 004cdc049b - Show all commits

View File

@ -14,6 +14,6 @@ The actual layering scheme is more complicated. All objects support styling. The
### 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

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?
fun getProperty(name): MetaItem?
fun setProperty(name, value)
}
class VisionBase{

View File

@ -17,11 +17,6 @@ import space.kscience.dataforge.values.ValueType
import space.kscience.visionforge.Vision.Companion.STYLE_KEY
import kotlin.jvm.Synchronized
internal data class PropertyListener(
val owner: Any? = null,
val action: (name: Name) -> Unit,
)
/**
* A full base implementation for a [Vision]
* @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) {
properties?.asMetaItem()