예제 #1
0
        public rMindBaseWire(rMindBaseController parent)
        {
            m_parent = parent;

            m_a_dot = new rMindBaseWireDot(this);
            m_b_dot = new rMindBaseWireDot(this);

            m_line = new Polyline()
            {
                Stroke           = new SolidColorBrush(Windows.UI.Colors.WhiteSmoke),
                StrokeThickness  = 6,
                IsHitTestVisible = false
            };

            m_bezie_figure   = new PathFigure();
            m_bezie_geometry = new PathGeometry();
            m_bezie_geometry.Figures.Add(m_bezie_figure);
            colors  = ColorContainer.rMindColors.Current();
            m_bezie = new Path()
            {
                Stroke           = colors.GetSolidBrush(Windows.UI.Colors.GhostWhite),
                StrokeThickness  = 2,
                IsHitTestVisible = false,
                Data             = m_bezie_geometry
            };

            m_bezie_segment = new BezierSegment();
            m_bezie_figure.Segments.Add(m_bezie_segment);
            Canvas.SetZIndex(Line, 10);
        }
예제 #2
0
        public void SetDragWireDot(rMindBaseWireDot item, PointerRoutedEventArgs e)
        {
            m_items_state.DragedWireDot = item;
            if (item == null)
            {
                return;
            }

            var node = item.ReverseDot.Node;

            if (node == null)
            {
                return;
            }

            item.Detach();
            BakeNodes(node);

            item.Wire.SetEnabledHitTest(false);
            var p = e.GetCurrentPoint(m_canvas);

            item.SetPosition(new Vector2(p.Position.X, p.Position.Y));
            m_items_state.StartPointerPosition = new Vector2(p.Position.X, p.Position.Y);
            m_items_state.StartPosition        = item.Position;

            SetManipulation(false, e);
        }
예제 #3
0
        protected bool TryAttachDot(rMindBaseWireDot dot, XElement options)
        {
            if (options == null)
            {
                return(false);
            }

            int itemIdx = 0;
            int nodeIdx = 0;

            if (int.TryParse(options.Attribute("item").Value, out itemIdx) && int.TryParse(options.Attribute("node").Value, out nodeIdx))
            {
                if (itemIdx == -1 || nodeIdx == -1)
                {
                    return(false);
                }

                var controller = GetController();
                if (controller == null)
                {
                    return(false);
                }

                var node = controller.GetNodeByIndexPair(itemIdx, nodeIdx);
                node.Attach(dot);

                return(true);
            }

            return(false);
        }
예제 #4
0
        public void SetDragWireDot(rMindBaseWireDot item, PointerRoutedEventArgs e)
        {
            m_items_state.DragedWireDot = item;
            if (item == null)
            {
                return;
            }

            var node = item.ReverseDot.Node;

            if (node == null)
            {
                return;
            }

            item.Detach();
            BakeNodes(node);

            var p = e.GetCurrentPoint(m_canvas);

            item.SetPosition(new Vector2(p.Position.X, p.Position.Y));
        }
예제 #5
0
 public bool CheckIsDraggedDot(rMindBaseWireDot dot)
 {
     return(m_items_state.DragedWireDot == dot);
 }