/// <summary>
        /// Mouse button up
        /// </summary>
        public override bool OnMouseUp(VCItem sender, ItemMouseEventArgs e)
        {
            if (zooming)
            {
                zooming = false;
                var location = ZoomLayer.Local2Global(e.Location);
                ContainsMouse = zoomArea.Contains(location);
                ZoomLayer.Invalidate();
                return(true);
            }

            return(base.OnMouseUp(sender, e));
        }
        /// <summary>
        /// Pass mouse down to appropriate item
        /// </summary>
        public override bool OnMouseDown(VCItem sender, ItemMouseEventArgs e)
        {
            var location = ZoomLayer.Local2Global(e.Location);

            if ((e.Button == MouseButtons.Left) && (zoomArea.Contains(location)))
            {
                zooming              = true;
                ContainsMouse        = true;
                ZoomLayer.ZoomFactor = GetZoomFactor(zoomArea, location);
                return(true);
            }
            return(base.OnMouseDown(sender, e));
        }
        /// <summary>
        /// Handle mouse moves
        /// </summary>
        public override bool OnMouseMove(VCItem sender, ItemMouseEventArgs e)
        {
            var location = ZoomLayer.Local2Global(e.Location);

            if (zooming)
            {
                ZoomLayer.ZoomFactor = GetZoomFactor(zoomArea, location);
                return(true);
            }

            ContainsMouse = zoomArea.Contains(location);
            return(base.OnMouseMove(sender, e));
        }
        protected virtual StatelessGenLayer CreateGenLayers(int seed)
        {
            StatelessGenLayer addIsland0 = new IslandLayer(seed, null);
            StatelessGenLayer zoomed0    = new ZoomLayer(seed, addIsland0);

            StatelessGenLayer biomesAdded = new BiomeLayer(seed, zoomed0);
            StatelessGenLayer addIsland1  = new AddIslandLayer(2, biomesAdded);
            StatelessGenLayer zoomed1     = new ZoomLayer(seed, addIsland1);
            StatelessGenLayer addIsland2  = new AddIslandLayer(50, zoomed1);

            // GenLayer zoomed2 = new GenLayerZoom(seed, zoomed0);
            StatelessGenLayer zoomed2 = ZoomLayer.Magnify(seed, addIsland2, 4);

            StatelessGenLayer addBeach = new AddBeachLayer(50, zoomed2);
            StatelessGenLayer zoomed3  = new ZoomLayer(seed, addBeach);
            StatelessGenLayer addRiver = new AddRiverLayer(1000, zoomed3);

            StatelessGenLayer result = ZoomLayer.Magnify(seed, addRiver, 2);

            // GenLayer biomesAdded = new GenLayerBiome(seed, zoomed0);
            // GenLayer zoomed2 = new GenLayerZoom(seed, zoomed1);
            return(result);
        }