/// <summary> /// Initializes a new instance of the <see cref="PieChart"/> class. /// </summary> /// <param name="tooltip">The default tool tip control.</param> /// <param name="legend">The default legend.</param> public PieChart(IChartTooltip <SkiaSharpDrawingContext>?tooltip = null, IChartLegend <SkiaSharpDrawingContext>?legend = null) : base(tooltip, legend) { _seriesObserver = new CollectionDeepObserver <ISeries>( (object?sender, NotifyCollectionChangedEventArgs e) => { if (sender is IStopNPC stop && !stop.IsNotifyingChanges) { return; } OnPropertyChanged(); }, (object?sender, PropertyChangedEventArgs e) => { if (sender is IStopNPC stop && !stop.IsNotifyingChanges) { return; } OnPropertyChanged(); }, true); var c = Controls[0].Controls[0]; c.MouseDown += OnMouseDown; }
/// <summary> /// Initializes a new instance of the <see cref="PolarChart"/> class. /// </summary> public PolarChart() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeComponent(); _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _angleObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _radiusObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); Loaded += OnLoaded; Unloaded += OnUnloaded; SetValue(AngleAxesProperty, new ObservableCollection <IPolarAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultPolarAxis() }); SetValue(RadiusAxesProperty, new ObservableCollection <IPolarAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultPolarAxis() }); SetValue(SeriesProperty, new ObservableCollection <ISeries>()); }
/// <summary> /// Initializes a new instance of the <see cref="GeoMap"/> class. /// </summary> public GeoMap() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } _core = new GeoMap <SkiaSharpDrawingContext>(this); canvas.SkCanvasView.EnableTouchEvents = true; canvas.SkCanvasView.Touch += OnSkCanvasTouched; SizeChanged += GeoMap_SizeChanged; _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); _seriesObserver = new CollectionDeepObserver <IGeoSeries>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); SetValue(ShapesProperty, Enumerable.Empty <IMapElement>()); SetValue(SeriesProperty, Enumerable.Empty <IGeoSeries>()); SetValue(ActiveMapProperty, Maps.GetWorldMap <SkiaSharpDrawingContext>()); SetValue(SyncContextProperty, new object()); }
/// <summary> /// Initializes a new instance of the <see cref="GeoMap"/> class. /// </summary> public GeoMap() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } MouseDown += OnMouseDown; MouseMove += OnMouseMove; MouseUp += OnMouseUp; MouseLeave += OnMouseLeave; MouseWheel += OnMouseWheel; SizeChanged += GeoMap_SizeChanged; _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); _seriesObserver = new CollectionDeepObserver <IGeoSeries>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); SetCurrentValue(ShapesProperty, Enumerable.Empty <MapShape <SkiaSharpDrawingContext> >()); SetCurrentValue(SeriesProperty, Enumerable.Empty <IGeoSeries>()); SetCurrentValue(ActiveMapProperty, Maps.GetWorldMap <SkiaSharpDrawingContext>()); SetCurrentValue(SyncContextProperty, new object()); Unloaded += GeoMap_Unloaded; }
public CartesianChart() { seriesObserver = new CollectionDeepObserver <ISeries>( (object sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } Application.Current.Dispatcher.Invoke(core.Update); }, (object sender, PropertyChangedEventArgs e) => { if (core == null) { return; } Application.Current.Dispatcher.Invoke(core.Update); }, true); XAxes = new List <IAxis>() { new Axis() }; YAxes = new List <IAxis>() { new Axis() }; Series = new ObservableCollection <ISeries>(); }
/// <summary> /// Called when the control is initalized. /// </summary> protected override void OnInitialized() { base.OnInitialized(); _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _angleObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _radiusObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); if (_angleAxes is null) { AngleAxes = new List <IPolarAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultPolarAxis() } } ; if (_radiusAxes is null) { RadiusAxes = new List <IPolarAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultPolarAxis() } } ; //ToDo: pointer events. //var c = Controls[0].Controls[0]; //c.MouseWheel += OnMouseWheel; //c.MouseDown += OnMouseDown; //c.MouseUp += OnMouseUp; } PolarChart <SkiaSharpDrawingContext> IPolarChartView <SkiaSharpDrawingContext> .Core => core is null ? throw new Exception("core not found") : (PolarChart <SkiaSharpDrawingContext>)core;
/// <summary> /// Initializes a new instance of the <see cref="CartesianChart"/> class. /// </summary> /// <param name="tooltip">The default tool tip control.</param> /// <param name="legend">The default legend control.</param> public CartesianChart(IChartTooltip <SkiaSharpDrawingContext>?tooltip = null, IChartLegend <SkiaSharpDrawingContext>?legend = null) : base(tooltip, legend) { _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _xObserver = new CollectionDeepObserver <ICartesianAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _yObserver = new CollectionDeepObserver <ICartesianAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _sectionsObserverer = new CollectionDeepObserver <Section <SkiaSharpDrawingContext> >( OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); XAxes = new List <ICartesianAxis>() { LiveCharts.CurrentSettings.AxisProvider() }; YAxes = new List <ICartesianAxis>() { LiveCharts.CurrentSettings.AxisProvider() }; Series = new ObservableCollection <ISeries>(); var c = Controls[0].Controls[0]; c.MouseWheel += OnMouseWheel; c.MouseDown += OnMouseDown; c.MouseUp += OnMouseUp; }
/// <summary> /// Initializes a new instance of the <see cref="GeoMap"/> class. /// </summary> public GeoMap() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } _activeMap = Maps.GetWorldMap <SkiaSharpDrawingContext>(); _core = new GeoMap <SkiaSharpDrawingContext>(this); _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); var c = Controls[0].Controls[0]; c.MouseDown += OnMouseDown; c.MouseMove += OnMouseMove; c.MouseUp += OnMouseUp; c.MouseLeave += OnMouseLeave; c.MouseWheel += OnMouseWheel; Resize += GeoMap_Resize; }
/// <summary> /// Initializes a new instance of the <see cref="CartesianChart"/> class. /// </summary> /// <param name="tooltip">The default tool tip control.</param> /// <param name="legend">The default legend control.</param> public CartesianChart(IChartTooltip <SkiaSharpDrawingContext>?tooltip = null, IChartLegend <SkiaSharpDrawingContext>?legend = null) : base(tooltip, legend) { seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); xObserver = new CollectionDeepObserver <IAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); yObserver = new CollectionDeepObserver <IAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); XAxes = new List <IAxis>() { new Axis() }; YAxes = new List <IAxis>() { new Axis() }; Series = new ObservableCollection <ISeries>(); var c = Controls[0].Controls[0]; c.MouseWheel += OnMouseWheel; c.MouseDown += OnMouseDown; c.MouseMove += OnMoseMove; c.MouseUp += OnMouseUp; panningThrottler = new ActionThrottler(DoPan, TimeSpan.FromMilliseconds(30)); }
/// <summary> /// Initializes a new instance of the <see cref="GeoMap"/> class. /// </summary> public GeoMap() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } _core = new GeoMap <SkiaSharpDrawingContext>(this); PointerPressed += OnPointerPressed; PointerMoved += OnPointerMoved; PointerReleased += OnPointerReleased; PointerWheelChanged += OnWheelChanged; PointerExited += OnPointerExited; SizeChanged += GeoMap_SizeChanged; _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core.Update(), true); _seriesObserver = new CollectionDeepObserver <IGeoSeries>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core.Update(), true); SetValue(ShapesProperty, Enumerable.Empty <MapShape <SkiaSharpDrawingContext> >()); SetValue(SeriesProperty, Enumerable.Empty <IGeoSeries>()); SetValue(ActiveMapProperty, Maps.GetWorldMap <SkiaSharpDrawingContext>()); SetValue(SyncContextProperty, new object()); Unloaded += GeoMap_Unloaded; }
/// <summary> /// Initializes a new instance of the <see cref="GeoMap"/> class. /// </summary> public GeoMap() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } _core = new GeoMap <SkiaSharpDrawingContext>(this); _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); _seriesObserver = new CollectionDeepObserver <IGeoSeries>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); Background = new SolidColorBrush(new Color(0, 0, 0, 0)); PointerWheelChanged += OnPointerWheelChanged; PointerPressed += OnPointerPressed; PointerMoved += OnPointerMoved; PointerLeave += OnPointerLeave; //Shapes = Enumerable.Empty<MapShape<SkiaSharpDrawingContext>>(); ActiveMap = Maps.GetWorldMap <SkiaSharpDrawingContext>(); SyncContext = new object(); DetachedFromVisualTree += GeoMap_DetachedFromVisualTree; }
/// <summary> /// Initializes a new instance of the <see cref="CartesianChart"/> class. /// </summary> public PieChart() { InitializeComponent(); _seriesObserver = new CollectionDeepObserver <ISeries>( (object?sender, NotifyCollectionChangedEventArgs e) => { if (_core == null || (sender is IStopNPC stop && !stop.IsNotifyingChanges)) { return; } _core.Update(); }, (object?sender, PropertyChangedEventArgs e) => { if (_core == null || (sender is IStopNPC stop && !stop.IsNotifyingChanges)) { return; } _core.Update(); }); Loaded += OnLoaded; Unloaded += OnUnloaded; }
public TestObserver() { observerer = new CollectionDeepObserver <T>( (sender, e) => { CollectionChangedCount++; }, (sender, e) => { PropertyChangedCount++; }); }
public TestObserver() { observerer = new CollectionDeepObserver <T>( (object sender, NotifyCollectionChangedEventArgs e) => { CollectionChangedCount++; }, (object sender, PropertyChangedEventArgs e) => { PropertyChangedCount++; }); }
/// <summary> /// Initializes a new instance of the <see cref="PieChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public PieChart() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); SizeChanged += OnSizeChanged; _seriesObserver = new CollectionDeepObserver <ISeries>( (object sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } MainThread.BeginInvokeOnMainThread(() => core.Update()); }, (object sender, PropertyChangedEventArgs e) => { if (core == null) { return; } MainThread.BeginInvokeOnMainThread(() => core.Update()); }); Series = new ObservableCollection <ISeries>(); canvas.SkCanvasView.EnableTouchEvents = true; canvas.SkCanvasView.Touch += OnSkCanvasTouched; if (core == null) { throw new Exception("Core not found!"); } core.Measuring += OnCoreMeasuring; core.UpdateStarted += OnCoreUpdateStarted; core.UpdateFinished += OnCoreUpdateFinished; }
public CartesianChart() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetStylesBuilder <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ConstructChart(this); InitializeCore(); SizeChanged += OnSizeChanged; mouseMoveThrottler = new ActionThrottler(MouseMoveThrottlerUnlocked, TimeSpan.FromMilliseconds(10)); seriesObserver = new CollectionDeepObserver <ISeries>( (object sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } MainThread.BeginInvokeOnMainThread(core.Update); }, (object sender, PropertyChangedEventArgs e) => { if (core == null) { return; } MainThread.BeginInvokeOnMainThread(core.Update); }, true); XAxes = new List <IAxis>() { new Axis() }; YAxes = new List <IAxis>() { new Axis() }; Series = new ObservableCollection <ISeries>(); }
/// <summary> /// Initializes a new instance of the <see cref="PieChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public PieChart() { InitializeComponent(); // workaround to detect mouse events. // Avalonia do not seem to detect events if background is not set. Background = new SolidColorBrush(Colors.Transparent); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); AttachedToVisualTree += OnAttachedToVisualTree; _seriesObserver = new CollectionDeepObserver <ISeries>( (object?sender, NotifyCollectionChangedEventArgs e) => { if (_core is null || (sender is IStopNPC stop && !stop.IsNotifyingChanges)) { return; } _core.Update(); }, (object?sender, PropertyChangedEventArgs e) => { if (_core is null || (sender is IStopNPC stop && !stop.IsNotifyingChanges)) { return; } _core.Update(); }); Series = new ObservableCollection <ISeries>(); PointerLeave += Chart_PointerLeave; PointerMoved += Chart_PointerMoved; PointerPressed += Chart_PointerPressed; DetachedFromVisualTree += PieChart_DetachedFromVisualTree; }
/// <summary> /// Initializes a new instance of the <see cref="CartesianChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public CartesianChart() { InitializeComponent(); // workaround to detect mouse events. // Avalonia do not seem to detect pointer events if background is not set. ((IChartView)this).BackColor = LvcColor.FromArgb(0, 0, 0, 0); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); AttachedToVisualTree += CartesianChart_AttachedToVisualTree; _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _xObserver = new CollectionDeepObserver <ICartesianAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _yObserver = new CollectionDeepObserver <ICartesianAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _sectionsObserver = new CollectionDeepObserver <Section <SkiaSharpDrawingContext> >( OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); XAxes = new List <ICartesianAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultCartesianAxis() }; YAxes = new List <ICartesianAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultCartesianAxis() }; Series = new ObservableCollection <ISeries>(); PointerPressed += CartesianChart_PointerPressed; PointerMoved += CartesianChart_PointerMoved; // .. special case in avalonia for pointer released... he handle our own pointer capture. PointerWheelChanged += CartesianChart_PointerWheelChanged; PointerLeave += CartesianChart_PointerLeave; DetachedFromVisualTree += CartesianChart_DetachedFromVisualTree; }
/// <summary> /// Initializes a new instance of the <see cref="CartesianChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public CartesianChart() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); SizeChanged += OnSizeChanged; _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _xObserver = new CollectionDeepObserver <ICartesianAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _yObserver = new CollectionDeepObserver <ICartesianAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _sectionsObserver = new CollectionDeepObserver <Section <SkiaSharpDrawingContext> >( OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); XAxes = new List <ICartesianAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultCartesianAxis() }; YAxes = new List <ICartesianAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultCartesianAxis() }; Series = new ObservableCollection <ISeries>(); canvas.SkCanvasView.EnableTouchEvents = true; canvas.SkCanvasView.Touch += OnSkCanvasTouched; if (core is null) { throw new Exception("Core not found!"); } core.Measuring += OnCoreMeasuring; core.UpdateStarted += OnCoreUpdateStarted; core.UpdateFinished += OnCoreUpdateFinished; }
/// <summary> /// Initializes a new instance of the <see cref="PolarChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public PolarChart() { InitializeComponent(); // workaround to detect mouse events. // Avalonia do not seem to detect pointer events if background is not set. ((IChartView)this).BackColor = LvcColor.FromArgb(0, 0, 0, 0); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); AttachedToVisualTree += OnAttachedToVisualTree; _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _angleObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _radiusObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); AngleAxes = new List <IPolarAxis>() { LiveCharts.CurrentSettings.PolarAxisProvider() }; RadiusAxes = new List <IPolarAxis>() { LiveCharts.CurrentSettings.PolarAxisProvider() }; Series = new ObservableCollection <ISeries>(); PointerWheelChanged += PolarChart_PointerWheelChanged; PointerPressed += PolarChart_PointerPressed; PointerMoved += PolarChart_PointerMoved; PointerLeave += PolarChart_PointerLeave; DetachedFromVisualTree += PolarChart_DetachedFromVisualTree; }
/// <summary> /// Initializes a new instance of the <see cref="PieChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public PieChart() { InitializeComponent(); // workaround to detect mouse events. // Avalonia do not seem to detect events if background is not set. Background = new SolidColorBrush(Colors.Transparent); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); _seriesObserver = new CollectionDeepObserver <ISeries>( (object?sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } _ = Dispatcher.UIThread.InvokeAsync(() => core.Update(), DispatcherPriority.Background); }, (object?sender, PropertyChangedEventArgs e) => { if (core == null) { return; } _ = Dispatcher.UIThread.InvokeAsync(() => core.Update(), DispatcherPriority.Background); }); Series = new ObservableCollection <ISeries>(); PointerLeave += CartesianChart_PointerLeave; PointerMoved += CartesianChart_PointerMoved; }
public Series(SeriesProperties properties) { this.properties = properties; observer = new CollectionDeepObserver <TModel>( (object sender, NotifyCollectionChangedEventArgs e) => { NotifySubscribers(); }, (object sender, PropertyChangedEventArgs e) => { NotifySubscribers(); }); var t = typeof(TModel); implementsICP = typeof(IChartPoint <TVisual, TLabel, TDrawingContext>).IsAssignableFrom(t); isValueType = t.IsValueType; }
/// <summary> /// Called when the control renders. /// </summary> /// <param name="firstRender"></param> /// <returns></returns> /// <exception cref="Exception"></exception> protected override async Task OnAfterRenderAsync(bool firstRender) { if (!firstRender) { return; } _core = new GeoMap <SkiaSharpDrawingContext>(this); _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); _seriesObserver = new CollectionDeepObserver <IGeoSeries>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); // ToDo: Pointer events. //var c = Controls[0].Controls[0]; //c.MouseDown += OnMouseDown; //c.MouseMove += OnMouseMove; //c.MouseUp += OnMouseUp; //c.MouseLeave += OnMouseLeave; //c.MouseWheel += OnMouseWheel; //Resize += GeoMap_Resize; if (_dom is null) { _dom = new DomJsInterop(JS); } var canvasBounds = await _dom.GetBoundingClientRect(_canvasContainer); _canvasWidth = canvasBounds.Width; _canvasHeight = canvasBounds.Height; _core.Update(); if (_motionCanvas is null) { throw new Exception("MotionCanvas not found"); } _jsFlexibleContainer.Resized += OnResized; }
public PieChart() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetStylesBuilder <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ConstructChart(this); InitializeCore(); mouseMoveThrottler = new ActionThrottler(MouseMoveThrottlerUnlocked, TimeSpan.FromMilliseconds(10)); seriesObserver = new CollectionDeepObserver <ISeries>( (object?sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } Dispatcher.UIThread.InvokeAsync(core.Update, DispatcherPriority.Background); }, (object?sender, PropertyChangedEventArgs e) => { if (core == null) { return; } Dispatcher.UIThread.InvokeAsync(core.Update, DispatcherPriority.Background); }); Series = new ObservableCollection <ISeries>(); }
public CartesianChart() { seriesObserver = new CollectionDeepObserver <ISeries>( (object sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } core.Update(); }, (object sender, PropertyChangedEventArgs e) => { if (core == null) { return; } core.Update(); }); }
/// <summary> /// Initializes a new instance of the <see cref="PolarChart"/> class. /// </summary> public PolarChart() { _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _angleObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _radiusObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); SetCurrentValue(AngleAxesProperty, new ObservableCollection <IPolarAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultPolarAxis() }); SetCurrentValue(RadiusAxesProperty, new ObservableCollection <IPolarAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultPolarAxis() }); SetCurrentValue(SeriesProperty, new ObservableCollection <ISeries>()); MouseWheel += OnMouseWheel; MouseDown += OnMouseDown; MouseUp += OnMouseUp; }
public PieChart() { seriesObserver = new CollectionDeepObserver <ISeries>( (object sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } Application.Current.Dispatcher.Invoke(core.Update); }, (object sender, PropertyChangedEventArgs e) => { if (core == null) { return; } Application.Current.Dispatcher.Invoke(core.Update); }); }
/// <summary> /// Initializes a new instance of the <see cref="PolarChart"/> class. /// </summary> public PolarChart() { InitializeComponent(); _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _angleObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _radiusObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); Loaded += OnLoaded; Unloaded += OnUnloaded; SetValue(AngleAxesProperty, new ObservableCollection <IPolarAxis>() { LiveCharts.CurrentSettings.PolarAxisProvider() }); SetValue(RadiusAxesProperty, new ObservableCollection <IPolarAxis>() { LiveCharts.CurrentSettings.PolarAxisProvider() }); SetValue(SeriesProperty, new ObservableCollection <ISeries>()); }
/// <summary> /// Initializes a new instance of the <see cref="PieChart"/> class. /// </summary> public PieChart() { _seriesObserver = new CollectionDeepObserver <ISeries>( (object?sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } Application.Current.Dispatcher.Invoke(() => core.Update()); }, (object?sender, PropertyChangedEventArgs e) => { if (core == null) { return; } Application.Current.Dispatcher.Invoke(() => core.Update()); }); SetCurrentValue(SeriesProperty, new ObservableCollection <ISeries>()); }
/// <summary> /// Initializes a new instance of the <see cref="PieChart"/> class. /// </summary> public PieChart() { _seriesObserver = new CollectionDeepObserver <ISeries>( (object?sender, NotifyCollectionChangedEventArgs e) => { if (core is null || (sender is IStopNPC stop && !stop.IsNotifyingChanges)) { return; } core.Update(); }, (object?sender, PropertyChangedEventArgs e) => { if (core is null || (sender is IStopNPC stop && !stop.IsNotifyingChanges)) { return; } core.Update(); }); SetCurrentValue(SeriesProperty, new ObservableCollection <ISeries>()); }