| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- using Client.MirGraphics;
- namespace Client.MirControls
- {
- public class MirImageControl : MirControl
- {
- public override Point DisplayLocation { get { return UseOffSet ? base.DisplayLocation.Add(Library.GetOffSet(Index)) : base.DisplayLocation; } }
- public Point DisplayLocationWithoutOffSet { get { return base.DisplayLocation; } }
- #region Auto Size
- private bool _autoSize;
- public bool AutoSize
- {
- get { return _autoSize; }
- set
- {
- if (_autoSize == value)
- return;
- _autoSize = value;
- OnAutoSizeChanged(EventArgs.Empty);
- }
- }
- public event EventHandler AutoSizeChanged;
- private void OnAutoSizeChanged(EventArgs e)
- {
- TextureValid = false;
- if (AutoSizeChanged != null)
- AutoSizeChanged.Invoke(this, e);
- }
- #endregion
- #region DrawImage
- private bool _drawImage;
- public bool DrawImage
- {
- get { return _drawImage; }
- set
- {
- if (_drawImage == value)
- return;
- _drawImage = value;
- OnDrawImageChanged();
- }
- }
- public event EventHandler DrawImageChanged;
- private void OnDrawImageChanged()
- {
- Redraw();
- if (DrawImageChanged != null)
- DrawImageChanged.Invoke(this, EventArgs.Empty);
- }
- #endregion
- #region Index
- private int _index;
- public virtual int Index
- {
- get { return _index; }
- set
- {
- if (_index == value)
- return;
- _index = value;
- OnIndexChanged();
- }
- }
- public event EventHandler IndexChanged;
- protected void OnIndexChanged()
- {
- OnSizeChanged();
- if (IndexChanged != null)
- IndexChanged.Invoke(this, EventArgs.Empty);
- }
- #endregion
- #region Library
- private MLibrary _library;
- public MLibrary Library
- {
- get { return _library; }
- set
- {
- if (_library == value)
- return;
- _library = value;
- OnLibraryChanged();
- }
- }
- public event EventHandler LibraryChanged;
- private void OnLibraryChanged()
- {
- OnSizeChanged();
- if (LibraryChanged != null)
- LibraryChanged.Invoke(this, EventArgs.Empty);
- }
- #endregion
- #region PixelDetect
- private bool _pixelDetect;
- protected bool PixelDetect
- {
- set
- {
- if (_pixelDetect == value)
- return;
- _pixelDetect = value;
- OnPixelDetectChanged();
- }
- }
- public event EventHandler PixelDetectChanged;
- private void OnPixelDetectChanged()
- {
- Redraw();
- if (PixelDetectChanged != null)
- PixelDetectChanged.Invoke(this, EventArgs.Empty);
- }
- #endregion
- #region UseOffset
- private bool _useOffSet;
- public bool UseOffSet
- {
- protected get { return _useOffSet; }
- set
- {
- if (_useOffSet == value)
- return;
- _useOffSet = value;
- OnUseOffSetChanged();
- }
- }
- public event EventHandler UseOffSetChanged;
- private void OnUseOffSetChanged()
- {
- OnLocationChanged();
- if (UseOffSetChanged != null)
- UseOffSetChanged.Invoke(this, EventArgs.Empty);
- }
- #endregion
- #region Size
- public override Size Size
- {
- set { base.Size = value; }
- get
- {
- if (AutoSize && Library != null && Index >= 0)
- return Library.GetTrueSize(Index);
- return base.Size;
- }
- }
- public override Size TrueSize
- {
- get
- {
- if (Library != null && Index >= 0)
- return Library.GetTrueSize(Index);
- return base.TrueSize;
- }
- }
- #endregion
- public MirImageControl()
- {
- _drawImage = true;
- _index = -1;
- ForeColour = Color.White;
- _autoSize = true;
- }
- protected internal override void DrawControl()
- {
- base.DrawControl();
- if (DrawImage && Library != null)
- {
- bool oldGray = DXManager.GrayScale;
- if (GrayScale)
- {
- DXManager.SetGrayscale(true);
- }
- if (Blending)
- Library.DrawBlend(Index, DisplayLocation, ForeColour, false, BlendingRate);
- else
- Library.Draw(Index, DisplayLocation, ForeColour, false, Opacity);
- if (GrayScale) DXManager.SetGrayscale(oldGray);
- }
- }
- public override bool IsMouseOver(Point p)
- {
- return base.IsMouseOver(p) && (!_pixelDetect || Library.VisiblePixel(Index, p.Subtract(DisplayLocation),true) || Moving);
- }
- #region Disposable
- protected override void Dispose(bool disposing)
- {
- base.Dispose(disposing);
-
- if (!disposing) return;
- DrawImageChanged = null;
- _drawImage = false;
- IndexChanged = null;
- _index = 0;
- LibraryChanged = null;
- Library = null;
- PixelDetectChanged = null;
- _pixelDetect = false;
- UseOffSetChanged = null;
- _useOffSet = false;
- }
- #endregion
- }
- }
|