public void AddLine(String LineName, Model.TrickerStarNodeSoltDetail from, Model.TrickerStarNodeSoltDetail to) { Model.TrickerStarLineModel line = new TrickerStarLineModel() { LineName = LineName, From = from, To = to }; TrickerStarFunctionNodeModel node_from_m = (TrickerStarFunctionNodeModel)m_FunctionNodeModels[line.From.NodeName]; TrickerStarFunctionNodeModel node_to_m = (TrickerStarFunctionNodeModel)m_FunctionNodeModels[line.To.NodeName]; DeleteLine(node_from_m.OutputSlot[from.SlotIndex].LineName); DeleteLine(node_to_m.InputSlot[to.SlotIndex].LineName); node_from_m.OutputSlot[from.SlotIndex].LineName = line.LineName; node_to_m.InputSlot[to.SlotIndex].LineName = line.LineName; line.From = node_from_m.OutputSlot[from.SlotIndex]; line.To = node_to_m.InputSlot[to.SlotIndex]; var geo = GenPathGeomentry(from, to); var path = GenPath(line.LineName, geo); m_FunctionNodeModels[line.From.NodeName] = node_from_m; m_FunctionNodeModels[line.To.NodeName] = node_to_m; m_FunctionLineModels[line.LineName] = line; m_FunctionLineViews[line.LineName] = path; C_MAIN_CANVAS.Children.Add(path); }
public void DeleteLine(String linename) { if (linename == null) { return; } if (m_FunctionLineModels.ContainsKey(linename)) { Model.TrickerStarLineModel line = (TrickerStarLineModel)m_FunctionLineModels[linename]; TrickerStarFunctionNodeModel node_from_m = (TrickerStarFunctionNodeModel)m_FunctionNodeModels[line.From.NodeName]; TrickerStarFunctionNodeModel node_to_m = (TrickerStarFunctionNodeModel)m_FunctionNodeModels[line.To.NodeName]; node_from_m.OutputSlot[line.From.SlotIndex].LineName = null; node_to_m.InputSlot[line.To.SlotIndex].LineName = null; m_FunctionNodeModels[line.From.NodeName] = node_from_m; m_FunctionNodeModels[line.To.NodeName] = node_to_m; Windows.UI.Xaml.Shapes.Path t_path = m_FunctionLineViews[line.LineName] as Windows.UI.Xaml.Shapes.Path; C_MAIN_CANVAS.Children.Remove(t_path); m_FunctionLineModels.Remove(linename); m_FunctionLineViews.Remove(linename); } else { } }
private void NODE_OnNodeClose(String name) { if (name == null) { return; } if (!m_FunctionNodeModels.ContainsKey(name)) { return; } TrickerStarFunctionNodeModel node_m = (TrickerStarFunctionNodeModel)m_FunctionNodeModels[name]; TrickerStarFunctionNode node_v = (TrickerStarFunctionNode)m_FunctionNodeViews[name]; foreach (var item in node_m.InputSlot) { DeleteLine(item.LineName); } foreach (var item in node_m.OutputSlot) { DeleteLine(item.LineName); } m_FunctionNodeModels.Remove(name); m_FunctionNodeViews.Remove(name); C_MAIN_CANVAS.Children.Remove(node_v); m_SelectedFunctionNodeModels.Clear(); m_FromSlot = null; m_ToSlot = null; }
void UnselectNodes() { foreach (object node_str in m_SelectedFunctionNodeModels.Keys) { TrickerStarFunctionNodeModel node_m = (TrickerStarFunctionNodeModel)m_SelectedFunctionNodeModels[node_str]; TrickerStarFunctionNode node_v = (TrickerStarFunctionNode)m_FunctionNodeViews[node_str]; node_v.Select(false); Canvas.SetZIndex(node_v, 4); } }
public PathGeometry GenPathGeomentry(Model.TrickerStarNodeSoltDetail from, Model.TrickerStarNodeSoltDetail to) { TrickerStarFunctionNodeModel node_from_m = (TrickerStarFunctionNodeModel)m_FunctionNodeModels[from.NodeName]; TrickerStarFunctionNodeModel node_to_m = (TrickerStarFunctionNodeModel)m_FunctionNodeModels[to.NodeName]; TrickerStarFunctionNode node_from_v = (TrickerStarFunctionNode)m_FunctionNodeViews[from.NodeName]; TrickerStarFunctionNode node_to_v = (TrickerStarFunctionNode)m_FunctionNodeViews[to.NodeName]; Point Line_from = new Point(node_from_m.Pos.X, node_from_m.Pos.Y), Line_to = new Point(node_to_m.Pos.X, node_to_m.Pos.Y); node_from_v.InvalidateMeasure(); Line_from.X += node_from_v.ActualWidth; Line_from.Y += from.SlotIndex * 48 + 96; Line_to.Y += to.SlotIndex * 48 + 96; Line_from.X -= 16; Line_to.X += 16; var pathGeometry1 = new PathGeometry(); var pathFigureCollection1 = new PathFigureCollection(); var pathFigure1 = new PathFigure(); pathFigure1.IsClosed = false; pathFigure1.StartPoint = new Windows.Foundation.Point(Line_from.X, Line_from.Y); pathFigureCollection1.Add(pathFigure1); pathGeometry1.Figures = pathFigureCollection1; var pathSegmentCollection1 = new PathSegmentCollection(); var pathSegment1 = new BezierSegment(); pathSegment1.Point1 = new Point(Line_from.X + 100, Line_from.Y); pathSegment1.Point2 = new Point(Line_to.X - 100, Line_to.Y); pathSegment1.Point3 = new Point(Line_to.X, Line_to.Y); pathSegmentCollection1.Add(pathSegment1); pathFigure1.Segments = pathSegmentCollection1; return(pathGeometry1); }
private void Node_PointerMoved(object sender, PointerRoutedEventArgs e) { m_ActiveElementType = ACTIVE_ELEMENT_TYPE.NODE; if (m_Pressed && m_ActiveElementType == ACTIVE_ELEMENT_TYPE.NODE) { e.Handled = true; var t = this.m_OldTranslation; t.X = (float)(e.GetCurrentPoint(this).Position.X - m_OldPoint.X); t.X /= C_MAINSCROLLVIEWER.ZoomFactor; t.Y = (float)(e.GetCurrentPoint(this).Position.Y - m_OldPoint.Y); t.Y /= C_MAINSCROLLVIEWER.ZoomFactor; m_OldPoint = e.GetCurrentPoint(this).Position; m_OldTranslation = t; foreach (object node in m_SelectedFunctionNodeModels.Keys) { TrickerStarFunctionNodeModel node_m = (TrickerStarFunctionNodeModel)m_SelectedFunctionNodeModels[node]; TrickerStarFunctionNode node_v = (TrickerStarFunctionNode)m_FunctionNodeViews[node]; node_v.Translation = new System.Numerics.Vector3((float)(node_v.Translation.X + t.X), (float)(node_v.Translation.Y + t.Y), node_v.Translation.Z); node_m.Pos.X = node_v.Translation.X; node_m.Pos.Y = node_v.Translation.Y; m_FunctionNodeModels[node] = node_m; foreach (var linename_i in node_m.InputSlot) { RefreshLine(linename_i.LineName); } foreach (var linename_o in node_m.OutputSlot) { RefreshLine(linename_o.LineName); } } } }
public void RefreshLine(String linename) { if (linename == null) { return; } if (m_FunctionLineModels.ContainsKey(linename)) { Model.TrickerStarLineModel line = (TrickerStarLineModel)m_FunctionLineModels[linename]; TrickerStarFunctionNodeModel node_from_m = (TrickerStarFunctionNodeModel)m_FunctionNodeModels[line.From.NodeName]; TrickerStarFunctionNodeModel node_to_m = (TrickerStarFunctionNodeModel)m_FunctionNodeModels[line.To.NodeName]; Windows.UI.Xaml.Shapes.Path t_path = m_FunctionLineViews[line.LineName] as Windows.UI.Xaml.Shapes.Path; var geo = GenPathGeomentry(line.From, line.To); t_path.Data = geo; } else { } }