Beispiel #1
0
        private void Initialize()
        {
            ApiExtensibility.Register(typeof(Windows.UI.Core.ICoreWindowExtension), o => new CoreWindowExtension(o));
            ApiExtensibility.Register(typeof(Windows.UI.ViewManagement.IApplicationViewExtension), o => new ApplicationViewExtension(o));
            ApiExtensibility.Register(typeof(Windows.Graphics.Display.IDisplayInformationExtension), o => _displayInformationExtension ??= new DisplayInformationExtension(o));

            void Dispatch(System.Action d)
            => _eventLoop.Schedule(() => d());

            void CreateApp(ApplicationInitializationCallbackParams _)
            {
                var app = _appBuilder();

                app.Host = this;
            }

            Windows.UI.Core.CoreDispatcher.DispatchOverride        = Dispatch;
            Windows.UI.Core.CoreDispatcher.HasThreadAccessOverride = () => _isDispatcherThread;

            _renderer = new Renderer();
            _displayInformationExtension !.Renderer = _renderer;

            CoreServices.Instance.ContentRootCoordinator.CoreWindowContentRootSet += OnCoreWindowContentRootSet;

            WUX.Application.StartWithArguments(CreateApp);
        }
        /// <summary>
        /// Updates graphic with new data series
        /// </summary>
        public override void FillData <TRecord>(IEnumerable <TRecord> newRecords, SerieSetting <TRecord>[] newSerieSettings)
        {
            plotAreaUpper.ClearRenderers();
            plotAreaLower.ClearRenderers();
            legendScrollerX.Reset();
            legendScrollerYUpper.Reset();
            legendScrollerYLower.Reset();

            addGridLineRenderers();

            base.FillData <TRecord>(newRecords, newSerieSettings);

            //MaxValueTextBlock.Text = maxValue.ToString("N");
            ////ValueXYLegend.MaxValue = maxValue;
            //if (IsShowYFromZero) {
            //  MinValueTextBlock.Visibility = Visibility.Hidden;
            //  minValue = 0;
            //  //ValueXYLegend.MinValue = 0;
            //} else {
            //  MinValueTextBlock.Text = minValue.ToString("N");
            //  //ValueXYLegend.MinValue = minValue;
            //}
            //if (IsShowOpenClose && MainSerieIndex>=0 && MainSerieIndex<newSerieSettings.Length && countRecords>0) {
            //  double open = valueLists[MainSerieIndex][0];
            //  double close = valueLists[MainSerieIndex][(int)countRecords-1];
            //  PercentageTextBlock.Text = ((close-open)/open).ToString("P");
            //  CloseTextBlock.Text = "C: " + close.ToString("N");
            //  AverageTextBlock.Text = "A: " + (averageValue/countRecords).ToString("N");
            //  OpenTextBlock.Text = "O: " + open.ToString("N");
            //} else {
            //  PercentageTextBlock.Visibility = Visibility.Hidden;
            //  OpenTextBlock.Visibility = Visibility.Hidden;
            //  AverageTextBlock.Visibility = Visibility.Hidden;
            //  CloseTextBlock.Visibility = Visibility.Hidden;
            //}

            //graphPolylines = new Polyline[newSerieSettings.Length];
            //highLowPolygons = new Polygon[newSerieSettings.Length];//half would be enough, but easier for programming, only few bytes waisted
            //closePoints = new List<Point>[newSerieSettings.Length];//to draw line back for Polygon

            for (int serieIndex = 0; serieIndex < newSerieSettings.Length; serieIndex++)
            {
                Renderer?renderer = CreateGraphRenderer <TRecord>(serieIndex, newSerieSettings[serieIndex]);
                if (renderer != null)
                {
                    if (newSerieSettings[serieIndex].Group == 0)
                    {
                        AddRenderer(renderer, plotAreaUpper, legendScrollerX, legendScrollerYUpper);
                    }
                    else if (newSerieSettings[serieIndex].Group == 1)
                    {
                        AddRenderer(renderer, plotAreaLower, legendScrollerX, legendScrollerYLower);
                    }
                    else
                    {
                        throw new Exception("Only group 0 and 1 are supported. SerieSettings[" + serieIndex + "]: " + newSerieSettings[serieIndex]);
                    }
                }
            }
        }
        /// <summary>
        /// Updates graphic with new data series
        /// </summary>
        public override void FillData <TRecord>(IEnumerable <TRecord> newRecords, SerieSetting <TRecord>[] newSerieSettings)
        {
            plotArea.ClearRenderers();
            legendScrollerX.Reset();
            legendScrollerY.Reset();

            addGridLineRenderers();

            base.FillData <TRecord>(newRecords, newSerieSettings);

            for (int serieIndex = 0; serieIndex < newSerieSettings.Length; serieIndex++)
            {
                Renderer?renderer = CreateGraphRenderer <TRecord>(serieIndex, newSerieSettings[serieIndex]);
                if (renderer != null)
                {
                    if (newSerieSettings[serieIndex].Group == 0)
                    {
                        AddRenderer(renderer, plotArea, legendScrollerX, legendScrollerY);
                    }
                    else
                    {
                        throw new Exception("Only group 0 is supported. SerieSettings[" + serieIndex + "]: " + newSerieSettings[serieIndex]);
                    }
                }
            }
        }
Beispiel #4
0
        private void Initialize()
        {
            ApiExtensibility.Register(typeof(Windows.UI.Core.ICoreWindowExtension), o => new CoreWindowExtension(o));
            ApiExtensibility.Register(typeof(Windows.UI.ViewManagement.IApplicationViewExtension), o => new ApplicationViewExtension(o));
            ApiExtensibility.Register(typeof(Windows.Graphics.Display.IDisplayInformationExtension), o => _displayInformationExtension ??= new DisplayInformationExtension(o));

            _renderer = new Renderer();
            _displayInformationExtension !.Renderer = _renderer;

            bool EnqueueNative(DispatcherQueuePriority priority, DispatcherQueueHandler callback)
            {
                _eventLoop.Schedule(() => callback());

                return(true);
            }

            void Dispatch(System.Action d)
            {
                _eventLoop.Schedule(() => d());
            }

            Windows.System.DispatcherQueue.EnqueueNativeOverride   = EnqueueNative;
            Windows.UI.Core.CoreDispatcher.DispatchOverride        = Dispatch;
            Windows.UI.Core.CoreDispatcher.HasThreadAccessOverride = () => _isDispatcherThread;

            void CreateApp(ApplicationInitializationCallbackParams _)
            {
                var app = _appBuilder();

                app.Host = this;
            }

            WUX.Application.Start(CreateApp, _args);
        }
Beispiel #5
0
        /// <summary>
        /// Finish drawing sprites
        /// </summary>
        /// <exception cref="InvalidOperationException"></exception>
        public void End()
        {
            Assert();

            if (!Drawing)
            {
                throw new InvalidOperationException("Not drawing; Begin() must be called first");
            }
            Drawing = false;
            OnEnd();
            CurrentlyDrawing = null;
        }
        void UpdateTexture()
        {
            _texture?.Dispose();
            _textureSet?.Dispose();
            _texture    = new Texture(_nativeImageSource);
            _textureSet = new TextureSet();
            _textureSet.SetTexture(0, _texture);

            if (_renderer == null)
            {
                _renderer = new Renderer(_geometry, _shader);
                AddRenderer(_renderer);
            }
            _renderer.SetTextures(_textureSet);
        }
Beispiel #7
0
        public void Begin()
        {
            Assert();

            if (Drawing)
            {
                throw new InvalidOperationException("Already drawing; End() must be called first");
            }
            if (CurrentlyDrawing != null)
            {
                throw new InvalidOperationException($"Renderer \"{CurrentlyDrawing.Name}\" is already currently drawing");
            }
            CurrentlyDrawing = this;
            Drawing          = true;
            OnBegin();
        }
Beispiel #8
0
        public override void Init(ModData modData, Dictionary <string, string> info)
        {
            // TODO this is for MAPD only.
            Game.Settings.Graphics.SheetSize = 8192;

            this.gen1 = InstallationFinder.RegisterInstallation(modData, new Generation1());
            this.gen2 = InstallationFinder.RegisterInstallation(modData, new Generation2());

            var game = modData.Manifest.Id switch
            {
                "openkrush_gen1" => this.gen1,
                "openkrush_gen2" => this.gen2,
                _ => null
            };

            if (game == null)
            {
                var manifestType = modData.Manifest.GetType();
                manifestType.GetField(nameof(Manifest.Cursors))?.SetValue(modData.Manifest, new[] { "openkrush|cursors.yaml" });
            }
            else
            {
                this.canRun = true;
            }

            base.Init(modData, info);

            this.renderer = Game.Renderer;

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

            this.sheet = new(SheetType.BGRA, modData.DefaultFileSystem.Open(this.canRun ? "uibits/loading_game.png" : "uibits/missing_installation.png"));
            this.logo  = new(this.sheet, new(0, 0, 640, 480), TextureChannel.RGBA);
        }
Beispiel #9
0
 internal RenderHandle(Renderer renderer, int componentId)
 {
     _renderer    = renderer ?? throw new ArgumentNullException(nameof(renderer));
     _componentId = componentId;
 }