Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Non latin chars #848

Merged
merged 8 commits into from
Dec 31, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions samples/BlazorSample/BlazorSample.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,8 @@
<ProjectReference Include="..\ViewModelsSamples\ViewModelsSamples.csproj" />
</ItemGroup>

<ItemGroup>
<NativeFileReference Include="$(HarfBuzzSharpStaticLibraryPath)\2.0.23\*.a" />
</ItemGroup>

</Project>
24 changes: 23 additions & 1 deletion samples/BlazorSample/Pages/Axes/LabelsFormat2.razor
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
@page "/Axes/LabelsFormat2"
@using LiveChartsCore.SkiaSharpView.Blazor
@using LiveChartsCore;
@using LiveChartsCore.SkiaSharpView;
@using SkiaSharp;
@using ViewModelsSamples.Axes.LabelsFormat2
@inject HttpClient Http;

<CartesianChart
Series="ViewModel.Series"
Expand All @@ -9,5 +13,23 @@
</CartesianChart>

@code {
public ViewModel ViewModel { get; set; } = new();
public ViewModel ViewModel { get; set; } = new();

protected async override Task OnInitializedAsync()
{
// On .net7, SkiaSharp 2.88.3 and SkiaSharp.HarfBuzz 2.88.3 the MatchCharacter does not load the font.
// The MatchCharacter function loads a font from the system,
// it seems that on WASM we must load the font manually.

// In this case, the font was added to the wwwroot folder, then we load it using the HTTPClient
// This is only necessary once, ideally when the app starts.

using var stream = await Http.GetStreamAsync("NotoSansSC-Regular.otf");
var typeface = SKTypeface.FromStream(stream);

LiveCharts.Configure(config => // mark
config // mark
.UseDefaults() // mark
.WithGlobalSKTypeface(typeface)); // mark
}
}
Binary file not shown.
4 changes: 4 additions & 0 deletions samples/ViewModelsSamples/Axes/LabelsFormat2/ViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ public partial class ViewModel
// SKTypeface = SKFontManager.Default.MatchCharacter('أ'), // Arab
// SKTypeface = SKFontManager.Default.MatchCharacter('あ'), // Japanese
// SKTypeface = SKFontManager.Default.MatchCharacter('Ж'), // Russian

// You can also register a default global SKTypeface // mark
// this will load the font in any Paint when the SKTypeface property is null. // mark
// for more info see: ToDo: Add link!!! // mark
}
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public CartesianChart()
// 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);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());

InitializeCore();

Expand Down Expand Up @@ -630,7 +630,7 @@ protected void InitializeCore()

_avaloniaCanvas = canvas;
_core = new CartesianChart<SkiaSharpDrawingContext>(
this, LiveChartsSkiaSharp.DefaultPlatformBuilder, canvas.CanvasCore, zoomingSection);
this, config => config.UseDefaults(), canvas.CanvasCore, zoomingSection);

_core.Measuring += OnCoreMeasuring;
_core.UpdateStarted += OnCoreUpdateStarted;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public partial class GeoMap : UserControl, IGeoMapView<SkiaSharpDrawingContext>
public GeoMap()
{
InitializeComponent();
if (!LiveCharts.IsConfigured) LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());
_core = new GeoMap<SkiaSharpDrawingContext>(this);
_seriesObserver = new CollectionDeepObserver<IGeoSeries>(
(object? sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public PieChart()
// Avalonia do not seem to detect events if background is not set.
Background = new SolidColorBrush(Colors.Transparent);

if (!LiveCharts.IsConfigured) LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());

InitializeCore();

Expand Down Expand Up @@ -523,7 +523,7 @@ protected void InitializeCore()
var canvas = this.FindControl<MotionCanvas>("canvas");
_avaloniaCanvas = canvas;
_core = new PieChart<SkiaSharpDrawingContext>(
this, LiveChartsSkiaSharp.DefaultPlatformBuilder, canvas.CanvasCore);
this, config => config.UseDefaults(), canvas.CanvasCore);

_core.Measuring += OnCoreMeasuring;
_core.UpdateStarted += OnCoreUpdateStarted;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public PolarChart()
// 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);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());

InitializeCore();

Expand Down Expand Up @@ -586,7 +586,7 @@ protected void InitializeCore()
var canvas = this.FindControl<MotionCanvas>("canvas");
_avaloniaCanvas = canvas;
_core = new PolarChart<SkiaSharpDrawingContext>(
this, LiveChartsSkiaSharp.DefaultPlatformBuilder, canvas.CanvasCore);
this, config => config.UseDefaults(), canvas.CanvasCore);

_core.Measuring += OnCoreMeasuring;
_core.UpdateStarted += OnCoreUpdateStarted;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,7 @@ protected override void InitializeCore()
canvas.CanvasCore.AddDrawableTask(zoomingSectionPaint);

core = new CartesianChart<SkiaSharpDrawingContext>(
this, LiveChartsSkiaSharp.DefaultPlatformBuilder, canvas.CanvasCore, zoomingSection);
this, config => config.UseDefaults(), canvas.CanvasCore, zoomingSection);
legend = new SKDefaultLegend(); // Template.FindName("legend", this) as IChartLegend<SkiaSharpDrawingContext>;
tooltip = new SKDefaultTooltip(); // Template.FindName("tooltip", this) as IChartTooltip<SkiaSharpDrawingContext>;

Expand Down
2 changes: 1 addition & 1 deletion src/skiasharp/LiveChartsCore.SkiaSharp.WPF/Chart.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public abstract class Chart : Control, IChartView<SkiaSharpDrawingContext>
/// <exception cref="Exception">Default colors are not valid</exception>
protected Chart()
{
if (!LiveCharts.IsConfigured) LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());

_visualsObserver = new CollectionDeepObserver<ChartElement<SkiaSharpDrawingContext>>(
OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true);
Expand Down
2 changes: 1 addition & 1 deletion src/skiasharp/LiveChartsCore.SkiaSharp.WPF/GeoMap.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ static GeoMap()
/// </summary>
public GeoMap()
{
if (!LiveCharts.IsConfigured) LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());

MouseDown += OnMouseDown;
MouseMove += OnMouseMove;
Expand Down
2 changes: 1 addition & 1 deletion src/skiasharp/LiveChartsCore.SkiaSharp.WPF/PieChart.cs
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ public override IEnumerable<VisualElement<SkiaSharpDrawingContext>> GetVisualsAt
protected override void InitializeCore()
{
if (canvas is null) throw new Exception("canvas not found");
core = new PieChart<SkiaSharpDrawingContext>(this, LiveChartsSkiaSharp.DefaultPlatformBuilder, canvas.CanvasCore);
core = new PieChart<SkiaSharpDrawingContext>(this, config => config.UseDefaults(), canvas.CanvasCore);
legend = new SKDefaultLegend(); // Template.FindName("legend", this) as IChartLegend<SkiaSharpDrawingContext>;
tooltip = new SKDefaultTooltip(); // Template.FindName("tooltip", this) as IChartTooltip<SkiaSharpDrawingContext>;
core.Update();
Expand Down
2 changes: 1 addition & 1 deletion src/skiasharp/LiveChartsCore.SkiaSharp.WPF/PolarChart.cs
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ protected override void InitializeCore()
{
if (canvas is null) throw new Exception("canvas not found");

core = new PolarChart<SkiaSharpDrawingContext>(this, LiveChartsSkiaSharp.DefaultPlatformBuilder, canvas.CanvasCore);
core = new PolarChart<SkiaSharpDrawingContext>(this, config => config.UseDefaults(), canvas.CanvasCore);
legend = new SKDefaultLegend(); // Template.FindName("legend", this) as IChartLegend<SkiaSharpDrawingContext>;
tooltip = new SKDefaultTooltip(); // Template.FindName("tooltip", this) as IChartTooltip<SkiaSharpDrawingContext>;
core.Update();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ protected override void InitializeCore()
motionCanvas.CanvasCore.AddDrawableTask(zoomingSectionPaint);

core = new CartesianChart<SkiaSharpDrawingContext>(
this, LiveChartsSkiaSharp.DefaultPlatformBuilder, motionCanvas.CanvasCore, zoomingSection);
this, config => config.UseDefaults(), motionCanvas.CanvasCore, zoomingSection);
if (((IChartView)this).DesignerMode) return;
core.Update();
}
Expand Down
2 changes: 1 addition & 1 deletion src/skiasharp/LiveChartsCore.SkiaSharp.WinForms/Chart.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ protected Chart(IChartTooltip<SkiaSharpDrawingContext>? tooltip, IChartLegend<Sk
Name = "CartesianChart";
ResumeLayout(true);

if (!LiveCharts.IsConfigured) LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());

InitializeCore();

Expand Down
2 changes: 1 addition & 1 deletion src/skiasharp/LiveChartsCore.SkiaSharp.WinForms/GeoMap.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public partial class GeoMap : UserControl, IGeoMapView<SkiaSharpDrawingContext>
public GeoMap()
{
InitializeComponent();
if (!LiveCharts.IsConfigured) LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());
_activeMap = Maps.GetWorldMap<SkiaSharpDrawingContext>();

_core = new GeoMap<SkiaSharpDrawingContext>(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ public override IEnumerable<VisualElement<SkiaSharpDrawingContext>> GetVisualsAt
protected override void InitializeCore()
{
core = new PieChart<SkiaSharpDrawingContext>(
this, LiveChartsSkiaSharp.DefaultPlatformBuilder, motionCanvas.CanvasCore, true);
this, config => config.UseDefaults(), motionCanvas.CanvasCore, true);
if (((IChartView)this).DesignerMode) return;
core.Update();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ public IEnumerable<IPolarAxis> RadiusAxes
protected override void InitializeCore()
{
core = new PolarChart<SkiaSharpDrawingContext>(
this, LiveChartsSkiaSharp.DefaultPlatformBuilder, motionCanvas.CanvasCore, true);
this, config => config.UseDefaults(), motionCanvas.CanvasCore, true);
if (((IChartView)this).DesignerMode) return;
core.Update();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public CartesianChart()
{
InitializeComponent();

if (!LiveCharts.IsConfigured) LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());

InitializeCore();
SizeChanged += OnSizeChanged;
Expand Down Expand Up @@ -692,7 +692,7 @@ protected void InitializeCore()
canvas.CanvasCore.AddDrawableTask(zoomingSectionPaint);

core = new CartesianChart<SkiaSharpDrawingContext>(
this, LiveChartsSkiaSharp.DefaultPlatformBuilder, canvas.CanvasCore, zoomingSection);
this, config => config.UseDefaults(), canvas.CanvasCore, zoomingSection);
core.Update();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public partial class GeoMap : ContentView, IGeoMapView<SkiaSharpDrawingContext>
public GeoMap()
{
InitializeComponent();
if (!LiveCharts.IsConfigured) LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());
_core = new GeoMap<SkiaSharpDrawingContext>(this);

canvas.SkCanvasView.EnableTouchEvents = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public PieChart()
{
InitializeComponent();

if (!LiveCharts.IsConfigured) LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());

InitializeCore();
SizeChanged += OnSizeChanged;
Expand Down Expand Up @@ -559,7 +559,7 @@ void IChartView.InvokeOnUIThread(Action action)
/// <returns></returns>
protected void InitializeCore()
{
core = new PieChart<SkiaSharpDrawingContext>(this, LiveChartsSkiaSharp.DefaultPlatformBuilder, canvas.CanvasCore);
core = new PieChart<SkiaSharpDrawingContext>(this, config => config.UseDefaults(), canvas.CanvasCore);
core.Update();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public PolarChart()
{
InitializeComponent();

if (!LiveCharts.IsConfigured) LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
if (!LiveCharts.IsConfigured) LiveCharts.Configure(config => config.UseDefaults());

InitializeCore();
SizeChanged += OnSizeChanged;
Expand Down Expand Up @@ -643,7 +643,7 @@ void IChartView.InvokeOnUIThread(Action action)
/// <returns></returns>
protected void InitializeCore()
{
core = new PolarChart<SkiaSharpDrawingContext>(this, LiveChartsSkiaSharp.DefaultPlatformBuilder, canvas.CanvasCore);
core = new PolarChart<SkiaSharpDrawingContext>(this, config => config.UseDefaults(), canvas.CanvasCore);
core.Update();
}

Expand Down