0.2.0 #71
@ -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
32
docs/hierarchy.md
Normal 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
BIN
docs/images/hierarchy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
@ -42,9 +42,7 @@ fun main(){
|
|||||||
*Basic properties:*
|
*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.
|
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.
|
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`.
|
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.
|
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.
|
Let's see how properties are set in solids.
|
||||||
|
@ -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{
|
||||||
|
@ -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()
|
||||||
|
Loading…
Reference in New Issue
Block a user