protected override bool InitializeTransformMatrix() { if (this.CurveList == null) { this.IsInitialized = false; InvalidSerieException e = new InvalidSerieException("No data to display..."); StockLog.Write(e); throw e; } if (this.GraphRectangle.Height > 0) { EventSeries.Clear(); // Create fake Event Series; for (int i = 0; i < 5; i++) { EventSeries.Add(new BoolSerie(this.EndIndex, "Test" + i, i%2 == 0)); } minValue = 0.0f; maxValue = EventSeries.Count + 1; if (graphic == null) { // Initialise graphics this.graphic = this.CreateGraphics(); RectangleF rect = this.graphic.VisibleClipBounds; rect.Inflate(new SizeF(-this.XMargin, -this.YMargin)); this.GraphRectangle = rect; } float coefX = (this.GraphRectangle.Width * 0.96f) / (EndIndex - StartIndex); float coefY = this.GraphRectangle.Height / (maxValue - minValue); matrixValueToScreen = new System.Drawing.Drawing2D.Matrix(); matrixValueToScreen.Translate(this.GraphRectangle.X - (StartIndex - 0.5f) * coefX, maxValue * coefY + this.GraphRectangle.Y); matrixValueToScreen.Scale(coefX, -coefY); matrixScreenToValue = (System.Drawing.Drawing2D.Matrix)matrixValueToScreen.Clone(); matrixScreenToValue.Invert(); } else { this.Deactivate("App too small...", false); return false; } return true; }
protected override bool InitializeTransformMatrix() { if (this.CurveList == null) { this.IsInitialized = false; InvalidSerieException e = new InvalidSerieException("No data to display..."); StockLog.Write(e); throw e; } if (this.GraphRectangle.Height > 0) { minValue = float.MaxValue; maxValue = float.MinValue; this.CurveList.GetMinMax(StartIndex, EndIndex, ref minValue, ref maxValue, this.ScaleInvisible); if (minValue == maxValue || float.IsNaN(minValue) || float.IsInfinity(minValue) || float.IsNaN(maxValue) || float.IsInfinity(maxValue)) { this.Deactivate("No volume for this stock", false); return false; } if (graphic == null) { // Initialise graphics this.graphic = this.CreateGraphics(); RectangleF rect = this.graphic.VisibleClipBounds; rect.Inflate(new SizeF(-this.XMargin, -this.YMargin)); this.GraphRectangle = rect; } float coefX = (this.GraphRectangle.Width * 0.96f) / (EndIndex - StartIndex); float coefY = this.GraphRectangle.Height / (maxValue - minValue); matrixValueToScreen = new System.Drawing.Drawing2D.Matrix(); matrixValueToScreen.Translate(this.GraphRectangle.X - (StartIndex - 0.5f) * coefX, maxValue * coefY + this.GraphRectangle.Y); matrixValueToScreen.Scale(coefX, -coefY); matrixScreenToValue = (System.Drawing.Drawing2D.Matrix)matrixValueToScreen.Clone(); matrixScreenToValue.Invert(); } else { this.Deactivate("App too small...", false); return false; } return true; }
protected virtual bool InitializeTransformMatrix() { using (MethodLogger ml = new MethodLogger(this)) { if (!CheckGraphSanity()) { return false; } if (this.StartIndex == this.EndIndex || this.EndIndex > this.dateSerie.Length - 1) { this.IsInitialized = false; InvalidSerieException e = new InvalidSerieException("Invalid input data range..."); StockLog.Write(e); throw e; } if (this.GraphRectangle.Height > 0) { minValue = float.MaxValue; maxValue = float.MinValue; this.CurveList.GetMinMax(StartIndex, EndIndex, ref minValue, ref maxValue, this.ScaleInvisible); if (minValue == maxValue || minValue == float.MaxValue || float.IsNaN(minValue) || float.IsInfinity(minValue) || maxValue == float.MinValue || float.IsNaN(maxValue) || float.IsInfinity(maxValue)) { this.Deactivate("Input data is corrupted and cannot be displayed...", false); return false; } if (this.IsLogScale && minValue > 0) { minValue *= 0.95f; } else { minValue -= (maxValue - minValue) * 0.1f; } maxValue += (maxValue - minValue) * 0.1f; float tmpMinValue, tmpMaxValue; if (this.IsLogScale) { tmpMinValue = minValue < 0 ? (float)-Math.Log10(-minValue + 1) : (float)Math.Log10(minValue + 1); tmpMaxValue = maxValue < 0 ? (float)-Math.Log10(-maxValue + 1) : (float)Math.Log10(maxValue + 1); } else { tmpMinValue = minValue; tmpMaxValue = maxValue; } float coefX = (this.GraphRectangle.Width * 0.96f) / (EndIndex - StartIndex); float coefY = this.GraphRectangle.Height / (tmpMaxValue - tmpMinValue); matrixValueToScreen = new System.Drawing.Drawing2D.Matrix(); matrixValueToScreen.Translate(this.GraphRectangle.X - (StartIndex - 0.5f) * coefX, tmpMaxValue * coefY + this.GraphRectangle.Y); matrixValueToScreen.Scale(coefX, -coefY); matrixScreenToValue = (System.Drawing.Drawing2D.Matrix)matrixValueToScreen.Clone(); matrixScreenToValue.Invert(); } else { this.Deactivate("App too small...", false); return false; } return true; } }