]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ontology/graph/DistrictNetworkDiagramSettings.pgraph
First prototype of HSV color space based dynamic DN element coloring
[simantics/district.git] / org.simantics.district.network.ontology / graph / DistrictNetworkDiagramSettings.pgraph
index 10744ea144927aa7120f9d87fd947ba9fa5231c2..0ca711a12d282d61356a76bc0e9c7cbdf3c6d02e 100644 (file)
@@ -1,4 +1,5 @@
 L0 = <http://www.simantics.org/Layer0-1.1>
+L0X = <http://www.simantics.org/Layer0X-1.1>
 DIA = <http://www.simantics.org/Diagram-2.2>
 STR = <http://www.simantics.org/Structural-1.2>
 MOD = <http://www.simantics.org/Modeling-1.2>
@@ -46,6 +47,25 @@ DN.Vertex.ScaleProperty <T L0.Value
     @L0.assert DN.Vertex.ScaleProperty.bias 0.0
 
 DN.Diagram
+    >-- DN.Diagram.elementColoringGradientHue ==> "Float" <R L0.HasProperty : SEL.GenericParameterType
+        L0.HasLabel "Element Color Hue"
+        L0.HasDescription "HSV/HSB color space hue value used for element coloring in degrees (0-360)"
+        L0X.HasUnit "deg"
+        L0X.RequiresDataType $(Float(unit="deg",range=[0..360]))
+        SEL.HasDisplayValue _ : SEL.DisplayValue
+            L0.Literal.HasInputValidator DN.Functions.hueValidator : L0.Function
+    >-- DN.Diagram.elementColoringGradientSaturation ==> "Float" <R L0.HasProperty : SEL.GenericParameterType
+        L0.HasLabel "Element Color Saturation"
+        L0.HasDescription "HSV/HSB color space saturation value used for element coloring in % (0-100)"
+        L0X.HasUnit "%"
+        L0X.RequiresDataType $(Float(unit="%",range=[0..100]))
+        SEL.HasDisplayValue _ : SEL.DisplayValue
+            L0.Literal.HasInputValidator DN.Functions.saturationValidator : L0.Function
+    >-- DN.Diagram.elementColoringFunction --> L0.String ==> "Resource -> <ReadGraph> Double" <R L0.HasProperty : SEL.GenericParameterType
+        L0.HasLabel "Element Color Brightness Function"
+        L0.HasDescription "Defines HSV/HSB color space brightness function whose value is cut off to fit [0,1]. Together with hue and saturation this defines the element color."
+        SEL.HasDisplayValue _ : SEL.DisplayValue
+            L0.Literal.HasInputValidator DN.Functions.brightnessValidator : L0.Function
     >-- DN.Diagram.edgeThicknessGain ==> "Double" <R L0.HasProperty : SEL.GenericParameterType
         L0.HasLabel "Edge Thickness Gain"
     >-- DN.Diagram.edgeThicknessBias ==> "Double" <R L0.HasProperty : SEL.GenericParameterType
@@ -58,6 +78,13 @@ DN.Diagram
         L0.HasLabel "Node Scale Bias"
     >-- DN.Diagram.nodeScaleProperty --> DN.Vertex.ScaleProperty <R L0.HasProperty : DN.VertexScalePropertyParameterType
         L0.HasLabel "Node Scale Property"
+    @L0.assert DN.Diagram.elementColoringGradientHue
+        0.0 : L0.Float
+            L0.HasDataType $(Float(unit="deg",range=[0..360]))
+    @L0.assert DN.Diagram.elementColoringGradientSaturation
+        100.0 : L0.Float
+            L0.HasDataType $(Float(unit="%",range=[0..100]))
+    @MOD.sclAssertion DN.Diagram.elementColoringFunction "\r -> 1.0" "Resource -> <ReadGraph> Double"
     @L0.assert DN.Diagram.edgeThicknessGain 1.0
     @L0.assert DN.Diagram.edgeThicknessBias 0.0
     @L0.assert DN.Diagram.edgeThicknessProperty DN.Edge.ThicknessProperty.Diameter
@@ -68,11 +95,13 @@ DN.Diagram
 // ----------------------------------------------------------------------------
 // Built-in enumerated ScaleProperty & ThicknessProperty instances
 
+DN.Functions.constantOne : L0.Function
+    L0.HasValueType "Resource -> <ReadGraph> Maybe Double"
+
 DN.Edge.ThicknessProperty.OnlyGainAndBias: DN.Edge.ThicknessProperty
     L0.HasLabel "Only Gain and Bias"
     DN.Edge.ThicknessProperty.value
-        DN.Functions.constantOne : L0.Function
-            L0.HasValueType "Resource -> <ReadGraph> Maybe Double"
+        DN.Functions.constantOne
 
 DN.Edge.ThicknessProperty.Diameter : DN.Edge.ThicknessProperty
     L0.HasLabel "Diameter"
@@ -85,8 +114,7 @@ DN.Edge.ThicknessProperty.Diameter : DN.Edge.ThicknessProperty
 DN.Vertex.ScaleProperty.OnlyGainAndBias: DN.Vertex.ScaleProperty
     L0.HasLabel "Only Gain and Bias"
     DN.Vertex.ScaleProperty.value
-        DN.Functions.constantOne : L0.Function
-            L0.HasValueType "Resource -> <ReadGraph> Maybe Double"
+        DN.Functions.constantOne
 
 DN.Vertex.ScaleProperty.NominalSupplyPressure : DN.Vertex.ScaleProperty
     L0.HasLabel "Nominal Supply Pressure"