mirror of
https://github.com/ZuneDev/MicrosoftIris.git
synced 2026-07-27 13:13:29 -07:00
Add project files.
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
// Decompiled with JetBrains decompiler
|
||||
// Type: Microsoft.Iris.ModelItems.RangedValue
|
||||
// Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
||||
// MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11
|
||||
// Assembly location: C:\Program Files\Zune\UIX.dll
|
||||
|
||||
using Microsoft.Iris.Library;
|
||||
using Microsoft.Iris.Markup;
|
||||
using System;
|
||||
|
||||
namespace Microsoft.Iris.ModelItems
|
||||
{
|
||||
internal class RangedValue : NotifyObjectBase, IUIRangedValue, IUIValueRange, INotifyObject
|
||||
{
|
||||
private float _value;
|
||||
private float _min;
|
||||
private float _max;
|
||||
private float _step;
|
||||
|
||||
public RangedValue(float min, float max, float step)
|
||||
{
|
||||
_min = min;
|
||||
_max = max;
|
||||
_step = step;
|
||||
}
|
||||
|
||||
public RangedValue()
|
||||
: this(float.MinValue, float.MaxValue, 1f)
|
||||
{
|
||||
}
|
||||
|
||||
public float Value
|
||||
{
|
||||
get => _value;
|
||||
set
|
||||
{
|
||||
value = Math.Max(value, _min);
|
||||
value = Math.Min(value, _max);
|
||||
if (_value == (double)value)
|
||||
return;
|
||||
using (new RangedValue.PrevNextNotifier(this))
|
||||
{
|
||||
_value = value;
|
||||
FireNotification(NotificationID.Value);
|
||||
FireNotification(NotificationID.ObjectValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object IUIValueRange.ObjectValue => _value;
|
||||
|
||||
public float MinValue
|
||||
{
|
||||
get => _min;
|
||||
set
|
||||
{
|
||||
if (_min == (double)value)
|
||||
return;
|
||||
using (new RangedValue.PrevNextNotifier(this))
|
||||
{
|
||||
_min = value;
|
||||
FireNotification(NotificationID.MinValue);
|
||||
FireNotification(NotificationID.Range);
|
||||
Value = Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public float MaxValue
|
||||
{
|
||||
get => _max;
|
||||
set
|
||||
{
|
||||
if (_max == (double)value)
|
||||
return;
|
||||
using (new RangedValue.PrevNextNotifier(this))
|
||||
{
|
||||
_max = value;
|
||||
FireNotification(NotificationID.MaxValue);
|
||||
FireNotification(NotificationID.Range);
|
||||
Value = Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public float Range => _max - _min;
|
||||
|
||||
public float Step
|
||||
{
|
||||
get => _step;
|
||||
set
|
||||
{
|
||||
if (_step == (double)value)
|
||||
return;
|
||||
using (new RangedValue.PrevNextNotifier(this))
|
||||
{
|
||||
_step = value;
|
||||
FireNotification(NotificationID.Step);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool HasPreviousValue => _step < 0.0 ? _value < (double)_max : _value > (double)_min;
|
||||
|
||||
public bool HasNextValue => _step < 0.0 ? _value > (double)_min : _value < (double)_max;
|
||||
|
||||
public void PreviousValue() => Value -= Step;
|
||||
|
||||
public void NextValue() => Value += Step;
|
||||
|
||||
private struct PrevNextNotifier : IDisposable
|
||||
{
|
||||
private bool _hadPrev;
|
||||
private bool _hadNext;
|
||||
private RangedValue _range;
|
||||
|
||||
public PrevNextNotifier(RangedValue range)
|
||||
{
|
||||
_range = range;
|
||||
_hadPrev = range.HasPreviousValue;
|
||||
_hadNext = range.HasNextValue;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (_range.HasPreviousValue != _hadPrev)
|
||||
_range.FireNotification(NotificationID.HasPreviousValue);
|
||||
if (_range.HasNextValue == _hadNext)
|
||||
return;
|
||||
_range.FireNotification(NotificationID.HasNextValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user