using MuchInfo.Chart.Data; using MuchInfo.Chart.Data.EnumTypes; using MuchInfo.Chart.WPF.Helpers; using MuchInfo.Chart.WPF.Primitives.Interfaces; using System; using NPOI.SS.UserModel; namespace MuchInfo.Chart.WPF.Primitives.Drawing { public class SharedDrawingToolSpec : IDrawingToolSpec { #region Fields private DrawingToolInfo _drawingToolInfo; private SharedDrawingToolContainer _sharedDrawingToolContainer; #endregion Fields #region Constructors public SharedDrawingToolSpec(SharedDrawingToolContainer aOwner, string symbol, IDrawingTool aTool, TimeSpan timeFrame, Guid scaleGuid, bool isPriceScale) { this._sharedDrawingToolContainer = aOwner; this._drawingToolInfo = new DrawingToolInfo { DrawType = checked((short)aTool.ToolType()), DrawingGUID = Guid.NewGuid(), TimeFrame = timeFrame.Ticks, Symbol = symbol }; bool flag = !isPriceScale; if (flag) { this._drawingToolInfo.ScaleGUID = scaleGuid; } aTool.GetDrawingInfo(this._drawingToolInfo); this._drawingToolInfo.ChartID = "ORIGSCALEGUID|" + this._sharedDrawingToolContainer.ScaleLayer().ScaleGUID.ToString(); SharedDrawingManager.AddDrawing(this._drawingToolInfo); } public SharedDrawingToolSpec(SharedDrawingToolContainer aOwner, DrawingToolInfo info) { this._sharedDrawingToolContainer = aOwner; this._drawingToolInfo = info; } #endregion Constructors #region Methods #region Public Static Methods public static IDrawingTool CreateToolFromInfo(DrawingToolInfo aInfo, SharedDrawingToolSpec aOwner) { IDrawingTool result; try { var drawingToolType = (DrawingToolType)(aInfo.DrawType.Value); IDrawingTool drawingTool = null; switch (drawingToolType) { //case DrawingToolType.AndrewsFork: // drawingTool = new drawingAndrewsPitchfork(); // break; case DrawingToolType.Ellipse: drawingTool = new DrawingEllipse(); break; case DrawingToolType.ErrorChannel: drawingTool = new DrawingErrorChannel(); break; //case DrawingToolType.FibArc: // drawingTool = new drawingFibArc(); // break; case DrawingToolType.FibFan: drawingTool = new DrawingFibFan(); break; case DrawingToolType.GannBox: drawingTool = new DrawingGannBox(); break; case DrawingToolType.FibRetr: drawingTool = new DrawingFibRetracement(); break; case DrawingToolType.FibTime: drawingTool = new DrawingFibTimeZones(); break; case DrawingToolType.GannFann: drawingTool = new DrawingGannFann(); break; case DrawingToolType.HLine: drawingTool = new DrawingHorizontalLine(); break; case DrawingToolType.QuadLines: drawingTool = new DrawingQuadrantLines(); break; //case DrawingToolType.RaffReg: // drawingTool = new drawingRaffRegression(); // break; case DrawingToolType.Rectangle: drawingTool = new DrawingRectangle(); break; //case DrawingToolType.RegrChan: // drawingTool = new drawingRegressionChannel(); // break; //case DrawingToolType.RegrLine: // drawingTool = new drawingRegressionLine(); // break; case DrawingToolType.SpeedLines: drawingTool = new DrawingSpeedLines(); break; case DrawingToolType.Text: drawingTool = new DrawingText(); break; case DrawingToolType.Tirone: drawingTool = new DrawingTironeLevels(); break; case DrawingToolType.TrendLine: drawingTool = new DrawingTrendLine(); break; case DrawingToolType.VLine: drawingTool = new DrawingVerticalLine(); break; case DrawingToolType.Arrow: drawingTool = new DrawingArrow(); break; } bool flag = drawingTool != null; if (flag) { drawingTool.FromInfo(aInfo); drawingTool.OwnerSpec = aOwner; result = drawingTool; return result; } } catch (Exception expr_1B2) { throw expr_1B2; } result = null; return result; } #endregion Public Static Methods #region Public Methods public void DeleteTool() { SharedDrawingManager.DeleteDrawing(this._drawingToolInfo); bool flag = this._sharedDrawingToolContainer != null; if (flag) { this._sharedDrawingToolContainer.SharedDrawingToolContainer_3819(this); } } public DrawingToolInfo GetDrawingInfo() { return this._drawingToolInfo; } public IDrawingTool GetTool() { return SharedDrawingToolSpec.CreateToolFromInfo(this._drawingToolInfo, this); } public ScaleLayer ScaleLayer() { return this._sharedDrawingToolContainer.ScaleLayer(); } public void ToolChanged(IDrawingTool aTool) { aTool.GetDrawingInfo(this._drawingToolInfo); SharedDrawingManager.UpdateDrawing(this._drawingToolInfo); } #endregion Public Methods #region Internal Methods internal Guid SharedDrawingToolSpec_3830() { bool flag = this._drawingToolInfo != null; Guid drawingGUID = Guid.Empty; if (flag) { drawingGUID = this._drawingToolInfo.DrawingGUID; } return drawingGUID; } #endregion Internal Methods #endregion Methods } }