diff --git a/docs/hierarchy.md b/docs/hierarchy.md index a4097221..2427cec7 100644 --- a/docs/hierarchy.md +++ b/docs/hierarchy.md @@ -1,17 +1,43 @@ # Hierarchy -![](../docs/images/hierarchy.png) -**the image will be changed** +![](../docs/images/hierarchy.png) ### 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. -`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. +### VisionBase -* 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.() -> 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. diff --git a/docs/inheritance.md b/docs/inheritance.md index c156bbda..079d1940 100644 --- a/docs/inheritance.md +++ b/docs/inheritance.md @@ -37,9 +37,9 @@ Properties, which can or cannot be inherited, are these: ![](../docs/images/inheritance-2-1-2.png) * `material` - a group of properties, which can be inherited and which can be changed in `children` elements. - * `color` - color of an element. - * `opacity` - a number from 0 to 1 which represents percents of opacity (0 for 0%, 1 for 100%). - * `wireframe` - toggles the wireframe mode. + * `color` - color of an element. + * `opacity` - a number from 0 to 1 which represents percents of opacity (0 for 0%, 1 for 100%). + * `wireframe` - toggles the wireframe mode. Let's see how elements of the `material` group inherit changing `color` property; ***other properties of this group inherit in the same way.*** diff --git a/docs/uml/Vision.puml b/docs/uml/Vision.puml index bb3143cc..2b4d9953 100644 --- a/docs/uml/Vision.puml +++ b/docs/uml/Vision.puml @@ -1,108 +1,124 @@ @startuml 'https://plantuml.com/class-diagram -interface Vision +interface Vision{ + val parent: VisionGroup? + fun getPropertyValue(name,inherit,includeStyles,includeDefaults): Value? +} -interface Solid -Vision <- Solid +interface Solid{ + The base for 3D geometry +} +Vision <-- Solid +class VisionGroup{ + A group of Visions -class VisionGroup + val children: Map + val defaultTarget: String + + fun content(target): Map + fun get(name: Name): Vision? +} Vision <-- VisionGroup -class VisionBase -Vision <- VisionBase +class VisionBase{ + basic vision implementation +} +Vision <-- VisionBase class SolidLabel Solid <--- SolidLabel -SolidBase <-- SolidLabel -class SolidGroup +class SolidGroup{ + var properties: MutableMeta? + val children: Map + var prototypes: MutableVisionGroup? + + fun getPrototype(name): Solid? + fun prototypes(builder) +} Solid <--- SolidGroup VisionGroupBase <-- SolidGroup -class SolidBase -Solid <--- SolidBase -VisionBase <-- SolidBase - - class SphereLayer -SolidBase <-- SphereLayer -GeometrySolid <-- SphereLayer +Solid <-- SphereLayer class Sphere -SolidBase <-- Sphere -GeometrySolid <-- Sphere +Solid <-- Sphere class Box -SolidBase <-- Box Hexagon <-- Box class GenericHexagon -SolidBase <-- GenericHexagon Hexagon <-- GenericHexagon class Extruded -SolidBase <-- Extruded -GeometrySolid <-- Extruded +Solid <-- Extruded class PolyLine Solid <--- PolyLine -SolidBase <-- PolyLine - -interface GeometrySolid -Solid <--- GeometrySolid interface Hexagon -GeometrySolid <-- Hexagon +Solid <-- Hexagon class ConeSegment -GeometrySolid <-- ConeSegment +Solid <-- ConeSegment class ConeSurface -GeometrySolid <-- ConeSurface +Solid <-- ConeSurface class Convex Solid <--- Convex -SolidBase <-- Convex class Composite Solid <--- Composite -SolidBase <-- Composite -interface SolidReference +interface SolidReference{ + val prototype: Solid + fun getPropertyValue(name,inherit,includeStyles,includeDefaults): Value? +} VisionGroup <---- SolidReference -interface MutableVisionGroup +class SolidReferenceGroup{ + val refName: Name + var properties: MutableMeta? + val prototype: Solid + val children: Map + fun getPropertyValue(name,inherit,includeStyles,includeDefaults): Value? +} +VisionBase <-- SolidReferenceGroup + +interface MutableVisionGroup{ + fun onStructureChanged(owner, block) + fun removeStructureListener(owner) +} VisionGroup <---- MutableVisionGroup -class SolidReferenceGroup -VisionGroup <-- SolidReferenceGroup -Solid <-- SolidReferenceGroup -VisionBase <-- SolidReferenceGroup -SolidReference <-- SolidReferenceGroup - -class ReferenceChild -VisionGroup <-- ReferenceChild -Solid <-- ReferenceChild -SolidReference <-- ReferenceChild - - -class VisionGroupBase +class VisionGroupBase{ + val children: Map + fun set(name: Name?, child: Vision?) +} VisionBase <-- VisionGroupBase MutableVisionGroup <-- VisionGroupBase - - class RootVisionGroup VisionGroupBase <-- RootVisionGroup - -class VisionOfPlotly +class VisionOfPlotly{ + var properties: MutableMeta? + val plot: Plot +} VisionBase <-- VisionOfPlotly + +class VisionOfMarkup{ + val format: String + var content: String? +} +VisionBase <-- VisionOfMarkup @enduml \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 2ffacd8f..0659c12d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,6 +2,8 @@ kotlin.code.style=official kotlin.mpp.enableGranularSourceSetsMetadata=true kotlin.mpp.stability.nowarn=true kotlin.native.enableDependencyPropagation=false +kapt.use.worker.api=false +kapt.incremental.apt=false org.gradle.jvmargs=-XX:MaxMetaspaceSize=1G org.gradle.parallel=true \ No newline at end of file