using System;
namespace RGB.NET.Core
{
public partial class RGBSurface
{
#region EventHandler
///
/// Represents the event-handler of the -event.
///
/// The arguments provided by the event.
public delegate void ExceptionEventHandler(ExceptionEventArgs args);
///
/// Represents the event-handler of the -event.
///
/// The arguments provided by the event.
public delegate void UpdatingEventHandler(UpdatingEventArgs args);
///
/// Represents the event-handler of the -event.
///
/// The arguments provided by the event.
public delegate void UpdatedEventHandler(UpdatedEventArgs args);
///
/// Represents the event-handler of the -event.
///
///
public delegate void SurfaceLayoutChangedEventHandler(SurfaceLayoutChangedEventArgs args);
#endregion
#region Events
// ReSharper disable EventNeverSubscribedTo.Global
///
/// Occurs when a catched exception is thrown inside the .
///
public event ExceptionEventHandler Exception;
///
/// Occurs when the starts updating.
///
public event UpdatingEventHandler Updating;
///
/// Occurs when the update is done.
///
public event UpdatedEventHandler Updated;
///
/// Occurs when the layout of this changed.
///
public event SurfaceLayoutChangedEventHandler SurfaceLayoutChanged;
// ReSharper restore EventNeverSubscribedTo.Global
#endregion
#region Methods
///
/// Handles the needed event-calls for an exception.
///
/// The exception previously thrown.
private void OnException(Exception ex)
{
try
{
Exception?.Invoke(new ExceptionEventArgs(ex));
}
catch { /* Well ... that's not my fault */ }
}
///
/// Handles the needed event-calls before updating.
///
private void OnUpdating()
{
try
{
long lastUpdateTicks = _lastUpdate.Ticks;
_lastUpdate = DateTime.Now;
Updating?.Invoke(new UpdatingEventArgs((DateTime.Now.Ticks - lastUpdateTicks) / 10000000.0));
}
catch { /* Well ... that's not my fault */ }
}
///
/// Handles the needed event-calls after an update.
///
private void OnUpdated()
{
try
{
Updated?.Invoke(new UpdatedEventArgs());
}
catch { /* Well ... that's not my fault */ }
}
#endregion
}
}