From 052336700a0f22cabe79d7937656d800e5b47db5 Mon Sep 17 00:00:00 2001 From: kiruma524 Date: Fri, 6 Aug 2021 17:17:17 +0300 Subject: [PATCH 1/2] spaces --- docs/tutorial.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/tutorial.md b/docs/tutorial.md index 886fe641..8989bd49 100644 --- a/docs/tutorial.md +++ b/docs/tutorial.md @@ -42,9 +42,7 @@ fun main(){ *Basic properties:* 1. `opacity` — It is set in `float`. It takes on values from 0 to 1, which represent percents of solid opacity. It's initial value is 1. 2. `color` — It can be specified as `Int`, `String`, or as three `Ubytes`, which represent color in `rgb`. Elementally, the solid will have `green` color. - 3. `rotation` — it's the point, which sets rotations along axes. Initially, the value is `Point3D(0, 0, 0)`. Changing `x` coordinate of the point, you make pivot around `x axis`. The same for other coordinates: changing `y` — pivot around `y axis`, changing `z` — pivot around `z axis`. - 4. position, which is given by values `x`, `y`, `z`. Initial values are `x = 0`, `y = 0`, `z = 0`. The coordinate system is Cartesian. It's elemental position is this — vertical `y` axis and horizontal `Oxz` plane. Let's see how properties are set in solids. From 004cdc049bf6067e47f47d6442fc99832ad42894 Mon Sep 17 00:00:00 2001 From: kiruma524 Date: Tue, 10 Aug 2021 13:21:35 +0300 Subject: [PATCH 2/2] Really Raw version of hierarchy documentation. --- docs/design.md | 2 +- docs/hierarchy.md | 32 ++++++++++++++++++ docs/images/hierarchy.png | Bin 0 -> 27217 bytes docs/uml/Vision.puml | 1 + .../space/kscience/visionforge/VisionBase.kt | 7 +--- 5 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 docs/hierarchy.md create mode 100644 docs/images/hierarchy.png diff --git a/docs/design.md b/docs/design.md index 79014d73..17e52a35 100644 --- a/docs/design.md +++ b/docs/design.md @@ -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 \ No newline at end of file diff --git a/docs/hierarchy.md b/docs/hierarchy.md new file mode 100644 index 00000000..eee02697 --- /dev/null +++ b/docs/hierarchy.md @@ -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). + + diff --git a/docs/images/hierarchy.png b/docs/images/hierarchy.png new file mode 100644 index 0000000000000000000000000000000000000000..e202c6afaa746ea54011d46fe48f1d0faae43c5a GIT binary patch literal 27217 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 F{{WiZ#M1x( literal 0 HcmV?d00001 diff --git a/docs/uml/Vision.puml b/docs/uml/Vision.puml index 2028b097..d7fd7103 100644 --- a/docs/uml/Vision.puml +++ b/docs/uml/Vision.puml @@ -5,6 +5,7 @@ interface Vision{ val parent: Vision? fun getProperty(name): MetaItem? fun setProperty(name, value) + } class VisionBase{ diff --git a/visionforge-core/src/commonMain/kotlin/space/kscience/visionforge/VisionBase.kt b/visionforge-core/src/commonMain/kotlin/space/kscience/visionforge/VisionBase.kt index 78b75124..08927448 100644 --- a/visionforge-core/src/commonMain/kotlin/space/kscience/visionforge/VisionBase.kt +++ b/visionforge-core/src/commonMain/kotlin/space/kscience/visionforge/VisionBase.kt @@ -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()