Skip to content

Commit

Permalink
Invert panning defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
Happypig375 committed Apr 7, 2020
1 parent 874ef06 commit c629355
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 15 deletions.
6 changes: 4 additions & 2 deletions CSharpMath.Avalonia.Example/Pages/MathButtonPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,17 @@
<TextBlock Classes="h1"
Text="CSharpMath.Avalonia.MathButton" />

<Button Width="230" Height="340">Hoi!</Button>
<Button>Hoi!</Button>
<TextBlock Classes="h2"
Text="Displays math as a button" />

</StackPanel>

<StackPanel Orientation="Horizontal"
Spacing="8">
<!--<csmath:MathButton LaTeX="{StaticResource Taylor}"/>-->
<Button>
<csmath:MathView LaTeX="{StaticResource Taylor}"/>
</Button>

</StackPanel>

Expand Down
6 changes: 3 additions & 3 deletions CSharpMath.Avalonia/MathButton.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ static MathButton() {
LaTeXProperty.Changed.AddClassHandler<MathButton>((b, e) => b.Painter.LaTeX = (string)e.NewValue);
AffectsMeasure<MathButton>(LaTeXProperty);
AffectsRender<MathButton>(LaTeXProperty);
}
}
public MathPainter Painter { get; } = new MathPainter();
protected override global::Avalonia.Size MeasureOverride(global::Avalonia.Size availableSize) =>
Painter.Measure((float)availableSize.Width) is { } rect
? new global::Avalonia.Size(rect.Width, rect.Height)
? new global::Avalonia.Size(rect.Width, rect.Height)
: base.MeasureOverride(availableSize);
public override void Render(DrawingContext context) {
Painter.Draw(new AvaloniaCanvas(context, Bounds.Size));
//Painter.Draw(new AvaloniaCanvas(context, Bounds.Size));
base.Render(context);
}
public string? LaTeX { get => (string?)GetValue(LaTeXProperty); set => SetValue(LaTeXProperty, value); }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<math:MathView x:Name="View"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
EnablePanning="True"
EnableTouchEvents="True"/>
</StackLayout>
</ContentPage>
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ Was added in 0.1.0-pre4; working in 0.1.0-pre5; fully tested in 0.1.0-pre6. \[\f
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
EnableTouchEvents="true"
EnablePanning="True"
Grid.Row="2"/>
</Grid>
</ContentPage>
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<math:MathView x:Name="View"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
EnableTouchEvents="True" />
EnableTouchEvents="True"
EnablePanning="True" />
</StackLayout>
</ContentPage>
16 changes: 7 additions & 9 deletions CSharpMath.Xaml/Views.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,15 +80,14 @@ public ReadOnlyProperty(string propertyName,
global::Avalonia.Point _origin;
protected override void OnPointerPressed(global::Avalonia.Input.PointerPressedEventArgs e) {
var point = e.GetCurrentPoint(this);
if (point.Properties.IsLeftButtonPressed && !DisablePanning) {
if (point.Properties.IsLeftButtonPressed && EnablePanning) {
_origin = point.Position;
e.Handled = true;
}
base.OnPointerPressed(e);
}
protected override void OnPointerMoved(global::Avalonia.Input.PointerEventArgs e) {
var point = e.GetCurrentPoint(this);
if (point.Properties.IsLeftButtonPressed && !DisablePanning) {
if (point.Properties.IsLeftButtonPressed && EnablePanning) {
var displacement = point.Position - _origin;
_origin = point.Position;
DisplacementX += (float)displacement.X;
Expand All @@ -98,9 +97,8 @@ protected override void OnPointerMoved(global::Avalonia.Input.PointerEventArgs e
}
protected override void OnPointerReleased(global::Avalonia.Input.PointerReleasedEventArgs e) {
var point = e.GetCurrentPoint(this);
if (point.Properties.IsLeftButtonPressed && !DisablePanning) {
if (point.Properties.IsLeftButtonPressed && EnablePanning) {
_origin = point.Position;
e.Handled = true;
}
base.OnPointerReleased(e);
}
Expand Down Expand Up @@ -130,7 +128,7 @@ public ReadOnlyProperty(string propertyName,
private protected static XColor XCanvasColorToXColor(XCanvasColor color) => global::SkiaSharp.Views.Forms.Extensions.ToFormsColor(color);
global::SkiaSharp.SKPoint _origin;
protected override void OnTouch(global::SkiaSharp.Views.Forms.SKTouchEventArgs e) {
if (e.InContact && !DisablePanning) {
if (e.InContact && EnablePanning) {
switch (e.ActionType) {
case global::SkiaSharp.Views.Forms.SKTouchAction.Pressed:
_origin = e.Location;
Expand Down Expand Up @@ -163,9 +161,9 @@ protected sealed override void OnPaintSurface(global::SkiaSharp.Views.Forms.SKPa
#endif
Painter.Draw(canvas, TextAlignment, Padding, DisplacementX, DisplacementY);
}
/// <summary>Panning is enabled by default when touch events are enabled.</summary>
public bool DisablePanning { get => (bool)GetValue(DisablePanningProperty); set => SetValue(DisablePanningProperty, value); }
public static readonly XProperty DisablePanningProperty = CreateProperty<BaseView<TPainter, TContent>, bool>(nameof(DisablePanning), false, _ => false, (_, __) => { });
/// <summary>Requires touch events to be enabled in SkiaSharp/Xamarin.Forms</summary>
public bool EnablePanning { get => (bool)GetValue(DisablePanningProperty); set => SetValue(DisablePanningProperty, value); }
public static readonly XProperty DisablePanningProperty = CreateProperty<BaseView<TPainter, TContent>, bool>(nameof(EnablePanning), false, _ => false, (_, __) => { });

static readonly System.Reflection.ParameterInfo[] drawMethodParams = typeof(TPainter)
.GetMethod(nameof(Painter<XCanvas, TContent, XColor>.Draw),
Expand Down

0 comments on commit c629355

Please sign in to comment.