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

Added delta values to AxisChangedEventArgs #276

Merged
merged 6 commits into from Dec 9, 2014
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
41 changes: 37 additions & 4 deletions Source/OxyPlot/Axes/Axis.cs
Expand Up @@ -958,6 +958,9 @@ public virtual void Pan(double delta)
return;
}

var oldMinimum = this.ActualMinimum;
var oldMaximum = this.ActualMaximum;

double dx = delta / this.Scale;

double newMinimum = this.ActualMinimum - dx;
Expand All @@ -978,7 +981,10 @@ public virtual void Pan(double delta)
this.ViewMaximum = newMaximum;
this.UpdateActualMaxMin();

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Pan));
var deltaMinimum = this.ActualMinimum - oldMinimum;
var deltaMaximum = this.ActualMaximum - oldMaximum;

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Pan, deltaMinimum, deltaMaximum));
}

/// <summary>
Expand All @@ -999,10 +1005,17 @@ public virtual void Render(IRenderContext rc, PlotModel model, AxisLayer axisLay
/// </summary>
public virtual void Reset()
{
var oldMinimum = this.ActualMinimum;
var oldMaximum = this.ActualMinimum;

this.ViewMinimum = double.NaN;
this.ViewMaximum = double.NaN;
this.UpdateActualMaxMin();
this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Reset));

var deltaMinimum = this.ActualMinimum - oldMinimum;
var deltaMaximum = this.ActualMaximum - oldMaximum;

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Reset, deltaMinimum, deltaMaximum));
}

/// <summary>
Expand Down Expand Up @@ -1054,6 +1067,9 @@ public virtual double Transform(double x)
/// <param name="newScale">The new scale.</param>
public virtual void Zoom(double newScale)
{
var oldMinimum = this.ActualMinimum;
var oldMaximum = this.ActualMaximum;

double sx1 = this.Transform(this.ActualMaximum);
double sx0 = this.Transform(this.ActualMinimum);

Expand Down Expand Up @@ -1099,6 +1115,11 @@ public virtual void Zoom(double newScale)
this.ViewMaximum = newMaximum;
this.ViewMinimum = newMinimum;
this.UpdateActualMaxMin();

var deltaMinimum = this.ActualMinimum - oldMinimum;
var deltaMaximum = this.ActualMaximum - oldMaximum;

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Zoom, deltaMinimum, deltaMaximum));
}

/// <summary>
Expand All @@ -1113,14 +1134,20 @@ public virtual void Zoom(double x0, double x1)
return;
}

var oldMinimum = this.ActualMinimum;
var oldMaximum = this.ActualMaximum;

double newMinimum = Math.Max(Math.Min(x0, x1), this.AbsoluteMinimum);
double newMaximum = Math.Min(Math.Max(x0, x1), this.AbsoluteMaximum);

this.ViewMinimum = newMinimum;
this.ViewMaximum = newMaximum;
this.UpdateActualMaxMin();

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Zoom));
var deltaMinimum = this.ActualMinimum - oldMinimum;
var deltaMaximum = this.ActualMaximum - oldMaximum;

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Zoom, deltaMinimum, deltaMaximum));
}

/// <summary>
Expand All @@ -1135,6 +1162,9 @@ public virtual void ZoomAt(double factor, double x)
return;
}

var oldMinimum = this.ActualMinimum;
var oldMaximum = this.ActualMaximum;

double dx0 = (this.ActualMinimum - x) * this.scale;
double dx1 = (this.ActualMaximum - x) * this.scale;
this.scale *= factor;
Expand All @@ -1146,7 +1176,10 @@ public virtual void ZoomAt(double factor, double x)
this.ViewMaximum = newMaximum;
this.UpdateActualMaxMin();

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Zoom));
var deltaMinimum = this.ActualMinimum - oldMinimum;
var deltaMaximum = this.ActualMaximum - oldMaximum;

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Zoom, deltaMinimum, deltaMaximum));
}

/// <summary>
Expand Down
22 changes: 19 additions & 3 deletions Source/OxyPlot/Axes/AxisChangedEventArgs.cs
Expand Up @@ -20,15 +20,31 @@ public class AxisChangedEventArgs : EventArgs
/// Initializes a new instance of the <see cref="AxisChangedEventArgs" /> class.
/// </summary>
/// <param name="changeType">Type of the change.</param>
public AxisChangedEventArgs(AxisChangeTypes changeType)
/// <param name="deltaMinimum">The delta minimum.</param>
/// <param name="deltaMaximum">The delta maximum.</param>
public AxisChangedEventArgs(AxisChangeTypes changeType, double deltaMinimum, double deltaMaximum)
{
this.ChangeType = changeType;
this.DeltaMinimum = deltaMinimum;
this.DeltaMaximum = deltaMaximum;
}

/// <summary>
/// Gets or sets the type of the change.
/// Gets the type of the change.
/// </summary>
/// <value>The type of the change.</value>
public AxisChangeTypes ChangeType { get; set; }
public AxisChangeTypes ChangeType { get; private set; }

/// <summary>
/// Gets the delta for the minimum.
/// </summary>
/// <value>The delta.</value>
public double DeltaMinimum { get; private set; }

/// <summary>
/// Gets the delta for the maximum.
/// </summary>
/// <value>The delta.</value>
public double DeltaMaximum { get; private set; }
}
}
23 changes: 19 additions & 4 deletions Source/OxyPlot/Axes/LogarithmicAxis.cs
Expand Up @@ -215,6 +215,9 @@ public override void Pan(ScreenPoint ppt, ScreenPoint cpt)
return;
}

var oldMinimum = this.ActualMinimum;
var oldMaximum = this.ActualMaximum;

double dx = x0 / x1;

double newMinimum = this.ActualMinimum * dx;
Expand All @@ -234,7 +237,10 @@ public override void Pan(ScreenPoint ppt, ScreenPoint cpt)
this.ViewMinimum = newMinimum;
this.ViewMaximum = newMaximum;

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Pan));
var deltaMinimum = this.ActualMinimum - oldMinimum;
var deltaMaximum = this.ActualMaximum - oldMaximum;

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Pan, deltaMinimum, deltaMaximum));
}

/// <summary>
Expand Down Expand Up @@ -276,17 +282,26 @@ public override void ZoomAt(double factor, double x)
return;
}

var oldMinimum = this.ActualMinimum;
var oldMaximum = this.ActualMaximum;

double px = this.PreTransform(x);
double dx0 = this.PreTransform(this.ActualMinimum) - px;
double dx1 = this.PreTransform(this.ActualMaximum) - px;
double newViewMinimum = this.PostInverseTransform((dx0 / factor) + px);
double newViewMaximum = this.PostInverseTransform((dx1 / factor) + px);

this.ViewMinimum = Math.Max(newViewMinimum, this.AbsoluteMinimum);
this.ViewMaximum = Math.Min(newViewMaximum, this.AbsoluteMaximum);
double newMinimum = Math.Max(newViewMinimum, this.AbsoluteMinimum);
double newMaximum = Math.Min(newViewMaximum, this.AbsoluteMaximum);

this.ViewMinimum = newMinimum;
this.ViewMaximum = newMaximum;
this.UpdateActualMaxMin();

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Zoom));
var deltaMinimum = this.ActualMinimum - oldMinimum;
var deltaMaximum = this.ActualMaximum - oldMaximum;

this.OnAxisChanged(new AxisChangedEventArgs(AxisChangeTypes.Zoom, deltaMinimum, deltaMaximum));
}

/// <summary>
Expand Down