X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fprofile%2FDiagramSettingsRequest.java;h=a17464d8aefe655ea4e83b9eea54832a513cc9f6;hb=8958c9b265fc6a842c76714b60f0d99740434243;hp=6fdb9721f059b20d32498e75f0f423659ebfa5be;hpb=3354c578fb8e65421d0fdb123310232ccdc597cf;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network/src/org/simantics/district/network/profile/DiagramSettingsRequest.java b/org.simantics.district.network/src/org/simantics/district/network/profile/DiagramSettingsRequest.java index 6fdb9721..a17464d8 100644 --- a/org.simantics.district.network/src/org/simantics/district/network/profile/DiagramSettingsRequest.java +++ b/org.simantics.district.network/src/org/simantics/district/network/profile/DiagramSettingsRequest.java @@ -20,11 +20,15 @@ public class DiagramSettingsRequest extends ResourceRead { super(runtimeDiagram); } - @Override + @SuppressWarnings("unchecked") + @Override public DiagramSettings perform(ReadGraph graph) throws DatabaseException { DiagramResource DIA = DiagramResource.getInstance(graph); DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); + Function1 elementColoringFunction = null; + float elementColoringGradientHue = 0; + float elementColoringGradientSaturation = 1; Function1 edgeThicknessProperty = null; Function1 nodeScaleProperty = null; double edgeThicknessGain = 1; @@ -34,6 +38,20 @@ public class DiagramSettingsRequest extends ResourceRead { Resource diagram = graph.getPossibleObject(resource, DIA.RuntimeDiagram_HasConfiguration); if (diagram != null) { + Variable dv = Variables.getPossibleVariable(graph, diagram); + if (dv != null) { + Object obj = dv.getPossiblePropertyValue(graph, DN.Diagram_elementColoringFunction); + if (obj instanceof Function1) { + elementColoringFunction = (Function1) obj; + } + } + elementColoringGradientHue = + limit(0, 360, safeFloatProperty(graph, diagram, DN.Diagram_elementColoringGradientHue, 0.0f)) + / 360.0f; + elementColoringGradientSaturation = + limit(0, 100, safeFloatProperty(graph, diagram, DN.Diagram_elementColoringGradientSaturation, 0.0f)) + / 100.0f; + Resource etp = graph.getPossibleObject(diagram, DN.Diagram_edgeThicknessProperty); //System.out.println("etp: " + NameUtils.getURIOrSafeNameInternal(graph, etp)); if (etp != null) { @@ -69,14 +87,31 @@ public class DiagramSettingsRequest extends ResourceRead { DiagramSettings ds = new DiagramSettings( nodeScaleProperty, nodeScaleGain, nodeScaleBias, - edgeThicknessProperty, edgeThicknessGain, edgeThicknessBias); + edgeThicknessProperty, edgeThicknessGain, edgeThicknessBias, + elementColoringFunction, + elementColoringGradientHue, + elementColoringGradientSaturation); //System.out.println("new diagram settings: " + ds); return ds; } + private static float safeFloatProperty(ReadGraph graph, Resource r, Resource property, float defaultValue) throws DatabaseException { + Float d = graph.getPossibleRelatedValue(r, property, Bindings.FLOAT); + return d != null ? d : defaultValue; + } + private static double safeDoubleProperty(ReadGraph graph, Resource r, Resource property, double defaultValue) throws DatabaseException { Double d = graph.getPossibleRelatedValue(r, property, Bindings.DOUBLE); return d != null ? d : defaultValue; } + private static float limit(float min, float max, float value) { + return Math.max(min, Math.min(value, max)); + } + + @SuppressWarnings("unused") + private static double limit(double min, double max, double value) { + return Math.max(min, Math.min(value, max)); + } + }