Beispiel #1
0
        public bool InsertRenderer(ICairoRenderer renderer)
        {
            var cairoRenderer = renderer;

            if (cairoRenderer == null)
            {
                return(false);
            }

            renderers.Add(cairoRenderer);
            return(true);
        }
Beispiel #2
0
        public Node InputNodeAt(Node root, double x, double y)
        {
            if (root.InputTransparent)
            {
                return(null);
            }

            var children = root.Children;

            if (children != null)
            {
                // Manual loop to avoid excessive creation of iterators
                for (int i = children.Count - 1; i >= 0; i--)
                {
                    var result = InputNodeAt(children[i], x, y);
                    if (result != null)
                    {
                        return(result);
                    }
                }
            }

            ICairoRenderer renderer = root.Renderer as ICairoRenderer;

            if (renderer == null)
            {
                return(null);
            }

            using (var context = contextInitializer()) {
                context.Save();
                renderer.LayoutOutline(root, context);
                var point = TransformPoint(root, x, y);

                if (context.InFill(point.X, point.Y))
                {
                    context.NewPath();
                    context.Restore();
                    return(root);
                }
                context.NewPath();
                context.Restore();
            }
            return(null);
        }
Beispiel #3
0
        public bool InsertRenderer(ICairoRenderer renderer)
        {
            var cairoRenderer = renderer;

            if (cairoRenderer == null)
                return false;

            renderers.Add (cairoRenderer);
            return true;
        }