/// <summary> /// Initializes a new instance of the <see cref="ConnectorDrawing" /> class. /// </summary> /// <param name="definition">The definition.</param> /// <param name="align">The align.</param> /// <param name="owningItem">The owning item.</param> public ConnectorDrawing(ConnectorDefinition definition, ConnectorAlign align, DiagramItem owningItem) { Align = align; Definition = definition; OwningItem = owningItem; var halfMargin = 10; switch (Align) { case ConnectorAlign.Top: case ConnectorAlign.Bottom: Margin = new Thickness(halfMargin, 0, halfMargin, 0); break; case ConnectorAlign.Left: case ConnectorAlign.Right: Margin = new Thickness(0, halfMargin, 0, halfMargin); break; } }
/// <summary> /// Generate points for given connectors. /// </summary> /// <param name="connectors">Connectors which points will be generated.</param> /// <param name="connectorAlign">The connector align.</param> /// <param name="item">The item.</param> /// <param name="points">The points.</param> /// <exception cref="System.NotSupportedException">Connector align + connectorAlign</exception> private void generateConnectorPoints(IEnumerable <ConnectorDrawing> connectors, ConnectorAlign connectorAlign, DiagramItem item, List <GraphPoint> points) { //detect conus for connector direction ViewAngle view; switch (connectorAlign) { case ConnectorAlign.Bottom: view = BottomEdge; break; case ConnectorAlign.Right: view = RightConus; break; case ConnectorAlign.Left: view = LeftConus; break; case ConnectorAlign.Top: view = TopEdge; break; default: throw new NotSupportedException("Connector align " + connectorAlign); } //create points for connectors var connectorsArray = connectors.ToArray(); var connectorsCount = connectorsArray.Length; for (var i = 0; i < connectorsCount; ++i) { var connector = connectorsArray[i]; var point = createPoint(connector, view); _connectorPoints.Add(connector, point); var inputs = getInputSlots(i, connectorsCount, connector, item, points); foreach (var input in inputs) { point.SetEdgeStatus(input); points.Add(input); } points.Add(point); } }
/// <summary> /// Exports the connectory drawing factory that is used for every drawn join. /// </summary> /// <param name="factory">The exported factory.</param> /// <param name="align">Align for which connector will be used.</param> protected void ExportConnectorFactory(ConnectorFactory factory, ConnectorAlign align) { Message("Exporting {0} connector factory {1}", align, factory); _connectorFactories[align] = factory; }
/// <summary> /// Gets the connector drawings. /// </summary> /// <param name="align">The align.</param> /// <returns>IEnumerable<ConnectorDrawing>.</returns> private IEnumerable<ConnectorDrawing> getConnectorDrawings(ConnectorAlign align) { return _connectors.Values.Where((connector) => connector.Align == align); }