コード例 #1
0
ファイル: Layer.cs プロジェクト: jtalbot/Labeling
        private bool NotifyMouseExitVisitor(Panel p, MouseEventArgs e)
        {
            Point test = new Point(e.X, e.Y);

            bool update = false;
            foreach(Mark m in p.Children)
            {
                if(m is Panel)
                {
                    update = NotifyMouseExitVisitor(m as Panel, e) || update;
                }

                if(m.hovered)
                {
                    if (!m.hitTest(test, p.ToScreen()))
                    {
                        update = m.MouseExit(p.ToScreen().untransform(test)) || update;
                        m.hovered = false;
                    }
                }
            }

            return update;
        }
コード例 #2
0
ファイル: Layer.cs プロジェクト: jtalbot/Labeling
        public List<Tuple<Mark, Transform, RectangleF, double>> DrawVisitor(Panel p, RectangleF clip, double order)
        {
            List<Tuple<Mark, Transform, RectangleF, double>> result = new List<Tuple<Mark, Transform, RectangleF, double>>();
            foreach (Mark m in p.Children)
            {
                if (m is Panel)
                {
                    RectangleF r = m.bounds(p.ToScreen());
                    r.Width += 1;
                    r.Height += 1;
                    r.Intersect(clip);

                    result.AddRange(DrawVisitor(m as Panel, (m as Panel).Clip ? r : clip, /*order + */m.Order));
                }
                result.Add(new Tuple<Mark, Transform, RectangleF, double>(m, p.ToScreen(), clip, /*order + */m.Order));
            }
            return result;
        }
コード例 #3
0
ファイル: Layer.cs プロジェクト: jtalbot/Labeling
        private bool NotifyMouseEnterVisitor(Panel p, MouseEventArgs e)
        {
            bool update = false;

            Point test = new Point(e.X, e.Y);
            foreach (Mark m in p.Children)
            {
                if (m is Panel)
                {
                    if(!(m as Panel).Clip || (m as Panel).bounds(p.ToScreen()).Contains(test))
                        update = NotifyMouseEnterVisitor(m as Panel, e) || update;
                }
                if (!m.hovered)
                {
                    if (m.hitTest(test, p.ToScreen()))
                    {
                        update = m.MouseEnter(p.ToScreen().untransform(test)) || update;
                        m.hovered = true;
                    }
                }
                if (m.hovered)
                {
                    update = m.MouseOver(p.ToScreen().untransform(test)) || update;
                }
            }

            return update;
        }