Esempio n. 1
0
        public void Initialize(SkyContext skyContext, ICollection <BaseRenderer> renderers)
        {
            mapContext = new MapContext(this, skyContext);

            Projection            = new ArcProjection(mapContext);
            Projection.IsInverted = settings.Get("IsInverted");
            Projection.IsMirrored = settings.Get("IsMirrored");

            this.renderers.AddRange(renderers);
            this.renderers.ForEach(r => r.Initialize());

            Schema = settings.Get <ColorSchema>("Schema");

            // get saved rendering orders
            RenderingOrder renderingOrder = settings.Get <RenderingOrder>("RenderingOrder");

            // sort renderers according saved orders
            this.renderers.Sort(renderingOrder.Select(r => r.RendererTypeName));

            // build rendering order based on existing renderers
            renderingOrder = new RenderingOrder(this.renderers.Select(r => new RenderingOrderItem(r)));

            // save actual rendering order
            settings.Set("RenderingOrder", renderingOrder);

            settings.SettingValueChanged += (name, value) =>
            {
                // redraw if rendering order changed
                if (name == "RenderingOrder")
                {
                    this.renderers.Sort(settings.Get <RenderingOrder>("RenderingOrder").Select(r => r.RendererTypeName));
                    Invalidate();
                }

                if (name == "Schema")
                {
                    Schema = settings.Get <ColorSchema>("Schema");
                    Invalidate();
                }

                if (name == "IsMirrored")
                {
                    Projection.IsMirrored = settings.Get("IsMirrored");
                    Invalidate();
                }

                if (name == "IsInverted")
                {
                    Projection.IsInverted = settings.Get("IsInverted");
                    Invalidate();
                }
            };
        }