]> 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 686fb391f9bdd94a1f8073a4b1bab8a8c3d0e499..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>
@@ -17,47 +18,115 @@ DN.EdgeThicknessPropertyParameterType <T SEL.GenericParameterType
             SEL.HasEnumerationValues DN.Functions.edgeThicknessPropertyEnumerationValues : L0.Function
             SEL.HasCustomModifier DN.Functions.edgeThicknessPropertyModifier : L0.Function
 
-DN.Vertex.ScaleProperty <T L0.Value
-    >-- DN.Vertex.ScaleProperty.value --> L0.Relation <R L0.HasProperty : SEL.GenericParameterType
+DN.VertexScalePropertyParameterType <T SEL.GenericParameterType
+    @L0.assert SEL.HasDisplayValue
+        _ : SEL.DisplayValue
+            SEL.HasEnumerationValues DN.Functions.nodeScalePropertyEnumerationValues : L0.Function
+            SEL.HasCustomModifier DN.Functions.nodeScalePropertyModifier : L0.Function
+
+DN.Edge.ThicknessProperty <T L0.Value
+    @L0.assert L0.ConvertsToValueWith DN.Functions.convertToValue
+    >-- DN.Edge.ThicknessProperty.value ==> "Resource -> <ReadGraph> Maybe Double" <R L0.HasProperty : SEL.GenericParameterType
+        L0.readOnly true
+    >-- DN.Edge.ThicknessProperty.gain --> L0.Double <R L0.HasProperty : SEL.GenericParameterType
         L0.readOnly true
-    >-- DN.Vertex.ScaleProperty.scale ==> "Double" <R L0.HasProperty : SEL.GenericParameterType
+    >-- DN.Edge.ThicknessProperty.bias --> L0.Double <R L0.HasProperty : SEL.GenericParameterType
         L0.readOnly true
+    @L0.assert DN.Edge.ThicknessProperty.gain 1.0
+    @L0.assert DN.Edge.ThicknessProperty.bias 0.0
 
-DN.Edge.ThicknessProperty <T L0.Value
-    >-- DN.Edge.ThicknessProperty.scale --> L0.Double <R L0.HasProperty : SEL.GenericParameterType
+DN.Vertex.ScaleProperty <T L0.Value
+    @L0.assert L0.ConvertsToValueWith DN.Functions.convertToValue
+    >-- DN.Vertex.ScaleProperty.value ==> "Resource -> <ReadGraph> Maybe Double" <R L0.HasProperty : SEL.GenericParameterType
+        L0.readOnly true
+    >-- DN.Vertex.ScaleProperty.gain ==> "Double" <R L0.HasProperty : SEL.GenericParameterType
         L0.readOnly true
-    >-- DN.Edge.ThicknessProperty.value --> L0.Relation <R L0.HasProperty : SEL.GenericParameterType
+    >-- DN.Vertex.ScaleProperty.bias ==> "Double" <R L0.HasProperty : SEL.GenericParameterType
         L0.readOnly true
+    @L0.assert DN.Vertex.ScaleProperty.gain 1.0
+    @L0.assert DN.Vertex.ScaleProperty.bias 0.0
 
 DN.Diagram
-    //>-- DN.Diagram.nodeScale ==> "Double" <R L0.HasProperty : SEL.GenericParameterType
-    //    L0.HasLabel "Node Scale"
-    //>-- DN.Diagram.nodeScalingProperty --> DN.Vertex.ScaleProperty <R L0.HasProperty : SEL.GenericParameterType
-    //   L0.HasLabel "Node Scaling Property"
-    >-- DN.Diagram.edgeThicknessScale ==> "Double" <R L0.HasProperty : SEL.GenericParameterType
-        L0.HasLabel "Edge Thickness Scale"
+    >-- 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
+        L0.HasLabel "Edge Thickness Bias"
     >-- DN.Diagram.edgeThicknessProperty --> DN.Edge.ThicknessProperty <R L0.HasProperty : DN.EdgeThicknessPropertyParameterType
         L0.HasLabel "Edge Thickness Property"
-    //@L0.assert DN.Diagram.nodeScale 1.0
-    //@L0.assert DN.Diagram.nodeScaleProperty DN.Vertex.ScaleProperty.SupplyPressure
-    @L0.assert DN.Diagram.edgeThicknessScale 1.0
+    >-- DN.Diagram.nodeScaleGain ==> "Double" <R L0.HasProperty : SEL.GenericParameterType
+        L0.HasLabel "Node Scale Gain"
+    >-- DN.Diagram.nodeScaleBias ==> "Double" <R L0.HasProperty : SEL.GenericParameterType
+        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
+    @L0.assert DN.Diagram.nodeScaleGain 1.0
+    @L0.assert DN.Diagram.nodeScaleBias 0.0
+    @L0.assert DN.Diagram.nodeScaleProperty DN.Vertex.ScaleProperty.NominalSupplyPressure
 
 // ----------------------------------------------------------------------------
 // Built-in enumerated ScaleProperty & ThicknessProperty instances
 
-DN.Vertex.ScaleProperty.SupplyPressure : DN.Vertex.ColorProperty
-    L0.HasLabel "Nominal Supply Pressure"
-    DN.Vertex.ScaleProperty.value DN.Vertex.HasSupplyPressure
-    DN.Vertex.ScaleProperty.scale 1.0
+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
 
 DN.Edge.ThicknessProperty.Diameter : DN.Edge.ThicknessProperty
     L0.HasLabel "Diameter"
-    DN.Edge.ThicknessProperty.value DN.Edge.HasDiameter
-    DN.Edge.ThicknessProperty.scale 0.001
+    DN.Edge.ThicknessProperty.value
+        DN.Functions.hasDiameterValue : L0.Function
+            L0.HasValueType "Resource -> <ReadGraph> Maybe Double"
+    DN.Edge.ThicknessProperty.gain 0.001
 
-DN.Edge.ThicknessProperty.NominalMassFlow : DN.Edge.ThicknessProperty
-    L0.HasLabel "Nominal Mass Flow"
-    DN.Edge.ThicknessProperty.value DN.Edge.HasNominalMassFlow
-    DN.Edge.ThicknessProperty.scale 1.0
 
+DN.Vertex.ScaleProperty.OnlyGainAndBias: DN.Vertex.ScaleProperty
+    L0.HasLabel "Only Gain and Bias"
+    DN.Vertex.ScaleProperty.value
+        DN.Functions.constantOne
+
+DN.Vertex.ScaleProperty.NominalSupplyPressure : DN.Vertex.ScaleProperty
+    L0.HasLabel "Nominal Supply Pressure"
+    DN.Vertex.ScaleProperty.value
+        DN.Functions.hasNominalSupplyPressure : L0.Function
+            L0.HasValueType "Resource -> <ReadGraph> Maybe Double"
+    DN.Vertex.ScaleProperty.gain 0.001
+
+DN.Vertex.ScaleProperty.Elevation : DN.Vertex.ScaleProperty
+    L0.HasLabel "Elevation"
+    DN.Vertex.ScaleProperty.value
+        DN.Functions.hasElevation : L0.Function
+            L0.HasValueType "Resource -> <ReadGraph> Maybe Double"
+    DN.Vertex.ScaleProperty.gain 0.1
+    DN.Vertex.ScaleProperty.bias 0.001