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]); } } } }
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); }
/// <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); }
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(); }
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); }
internal RenderHandle(Renderer renderer, int componentId) { _renderer = renderer ?? throw new ArgumentNullException(nameof(renderer)); _componentId = componentId; }