Added ability render bases on phone/tablet
This commit is contained in:
@@ -33,20 +33,30 @@ namespace Navigator.Renderers
|
||||
private PortfolioTradesWithParityPrice portfolioTradesWithParityPrice;
|
||||
private StopLimit stopLimit;
|
||||
private DateGenerator dateGenerator=new DateGenerator();
|
||||
private bool deviceIsTablet=false;
|
||||
|
||||
public BollingerBandRenderer()
|
||||
{
|
||||
}
|
||||
|
||||
public void SetPaint(SKPaint paint,Band band)
|
||||
{
|
||||
if(!bollingerBandGraphs.ContainsKey((int)band))return;
|
||||
bollingerBandGraphs[(int)band].SetPaint(paint);
|
||||
}
|
||||
|
||||
public bool DeviceIsTablet
|
||||
{
|
||||
get{return deviceIsTablet;}
|
||||
set{deviceIsTablet=value;}
|
||||
}
|
||||
|
||||
public StopLimit StopLimit
|
||||
{
|
||||
get{return stopLimit;}
|
||||
set{stopLimit=value;}
|
||||
}
|
||||
|
||||
public PortfolioTradesWithParityPrice PortfolioTradesWithParityPrice
|
||||
{
|
||||
get{return portfolioTradesWithParityPrice;}
|
||||
@@ -57,6 +67,7 @@ namespace Navigator.Renderers
|
||||
}
|
||||
}
|
||||
private PortfolioTrades PortfolioTrades{get;set;}
|
||||
|
||||
public CompositeDataSource K
|
||||
{
|
||||
set
|
||||
@@ -65,6 +76,7 @@ namespace Navigator.Renderers
|
||||
else bollingerBandGraphs.Add((int)Band.K,new LineGraph(paintK,value));
|
||||
}
|
||||
}
|
||||
|
||||
public CompositeDataSource KL1
|
||||
{
|
||||
set
|
||||
@@ -73,6 +85,7 @@ namespace Navigator.Renderers
|
||||
else bollingerBandGraphs.Add((int)Band.KL1,new LineGraph(paintKL1,value));
|
||||
}
|
||||
}
|
||||
|
||||
public CompositeDataSource L
|
||||
{
|
||||
set
|
||||
@@ -81,6 +94,7 @@ namespace Navigator.Renderers
|
||||
else bollingerBandGraphs.Add((int)Band.L,new LineGraph(paintL,value));
|
||||
}
|
||||
}
|
||||
|
||||
public CompositeDataSource LP1
|
||||
{
|
||||
set
|
||||
@@ -89,6 +103,7 @@ namespace Navigator.Renderers
|
||||
else bollingerBandGraphs.Add((int)Band.LP1,new LineGraph(paintLP1,value));
|
||||
}
|
||||
}
|
||||
|
||||
public CompositeDataSource High
|
||||
{
|
||||
set
|
||||
@@ -97,6 +112,7 @@ namespace Navigator.Renderers
|
||||
else bollingerBandGraphs.Add((int)Band.High,new LineGraph(paintHigh,value));
|
||||
}
|
||||
}
|
||||
|
||||
public CompositeDataSource Low
|
||||
{
|
||||
set
|
||||
@@ -105,6 +121,7 @@ namespace Navigator.Renderers
|
||||
else bollingerBandGraphs.Add((int)Band.Low,new LineGraph(paintLow,value));
|
||||
}
|
||||
}
|
||||
|
||||
public CompositeDataSource Close
|
||||
{
|
||||
set
|
||||
@@ -113,14 +130,17 @@ namespace Navigator.Renderers
|
||||
else bollingerBandGraphs.Add((int)Band.Close,new LineGraph(paintClose,value));
|
||||
}
|
||||
}
|
||||
|
||||
private Type GetXDataType()
|
||||
{
|
||||
return typeof(DateTime);
|
||||
}
|
||||
|
||||
private Type GetYDataType()
|
||||
{
|
||||
return typeof(double);
|
||||
}
|
||||
|
||||
//*********************************************************************************************************************************************************************
|
||||
public CompositeDataSource SMAN
|
||||
{
|
||||
@@ -130,6 +150,7 @@ namespace Navigator.Renderers
|
||||
else bollingerBandGraphs.Add((int)Band.SMAN,new LineGraph(paintSMAN,value));
|
||||
}
|
||||
}
|
||||
|
||||
public void Refresh()
|
||||
{
|
||||
RefreshRequested?.Invoke(this, EventArgs.Empty);
|
||||
@@ -172,6 +193,7 @@ namespace Navigator.Renderers
|
||||
RenderParityPricePointMarker(canvas,pointMapping,paintParityPricePointMarkerStroke,paintParityPricePointMarkerFill);
|
||||
RenderStopLimitPointMarker(canvas,pointMapping,paintStopLimitMarkerStroke,paintStopLimitMarkerFill);
|
||||
}
|
||||
|
||||
public void RenderPositionPointMarkers(SKCanvas canvas,PointMapping pointMapping,SKPaint paintPointMarkerStroke,SKPaint paintPointMarkerFill)
|
||||
{
|
||||
if(null==PortfolioTrades||0==PortfolioTrades.Count)return;
|
||||
@@ -185,29 +207,45 @@ namespace Navigator.Renderers
|
||||
{
|
||||
SKPoint tradePoint=new SKPoint((float)(portfolioTrade.TradeDate.Ticks/10000000000.0),(float)portfolioTrade.Price);
|
||||
tradePoint=pointMapping.MapPoint(tradePoint);
|
||||
DrawingHelper.DrawIsoTriangle(canvas,tradePoint,50,paintPointMarkerStroke,paintPointMarkerFill);
|
||||
DrawTriangle(canvas,tradePoint,paintPointMarkerStroke,paintPointMarkerFill);
|
||||
}
|
||||
}
|
||||
|
||||
public void RenderParityPricePointMarker(SKCanvas canvas,PointMapping pointMapping,SKPaint parityPricePointMarkerStroke,SKPaint parityPricePointMarkerFill)
|
||||
{
|
||||
if(null==PortfolioTradesWithParityPrice||null==PortfolioTradesWithParityPrice.ParityPrice)return;
|
||||
SKPoint parityPoint=new SKPoint((float)(portfolioTradesWithParityPrice.ParityPrice.Date.Ticks/10000000000.0),(float)portfolioTradesWithParityPrice.ParityPrice.Close);
|
||||
parityPoint=pointMapping.MapPoint(parityPoint);
|
||||
DrawingHelper.DrawIsoTriangle(canvas,parityPoint,50,parityPricePointMarkerStroke,parityPricePointMarkerFill);
|
||||
DrawTriangle(canvas,parityPoint,parityPricePointMarkerStroke,parityPricePointMarkerFill);
|
||||
}
|
||||
|
||||
public void RenderStopLimitPointMarker(SKCanvas canvas,PointMapping pointMapping,SKPaint stopLimitPointMarkerStroke,SKPaint stopLimitPointMarkerFill)
|
||||
{
|
||||
if(null==stopLimit)return;
|
||||
SKPoint stopLimitPoint=new SKPoint((float)(pointMapping.XDataExtent),(float)stopLimit.StopPrice);
|
||||
stopLimitPoint=pointMapping.MapPoint(stopLimitPoint);
|
||||
DrawingHelper.DrawIsoTriangle(canvas,stopLimitPoint,50,stopLimitPointMarkerStroke,stopLimitPointMarkerFill);
|
||||
DrawTriangle(canvas,stopLimitPoint,stopLimitPointMarkerStroke,stopLimitPointMarkerFill);
|
||||
}
|
||||
|
||||
public void DrawTriangle(SKCanvas canvas,SKPoint point,SKPaint paintStrokeMarker,SKPaint paintFillMarker)
|
||||
{
|
||||
double baseLength = 50;
|
||||
if(DeviceIsTablet)baseLength*=.45;
|
||||
DrawingHelper.DrawIsoTriangle(canvas, point, (int)baseLength, paintStrokeMarker, paintFillMarker);
|
||||
}
|
||||
|
||||
public double XDataExtent{get;set;}
|
||||
|
||||
public double XDataExtentMin{get;set;}
|
||||
|
||||
public double XRange{get{return XDataExtent-XDataExtentMin;}}
|
||||
|
||||
public double YDataExtent{get;set;}
|
||||
|
||||
public double YDataExtentMin{get;set;}
|
||||
|
||||
public double YRange{get{return YDataExtent-YDataExtentMin;}}
|
||||
|
||||
private bool AnyData()
|
||||
{
|
||||
if(bollingerBandGraphs.ContainsKey((int)Band.K))return true;
|
||||
@@ -221,6 +259,7 @@ namespace Navigator.Renderers
|
||||
if(bollingerBandGraphs.ContainsKey((int)Band.SMAN))return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
private double GetXDataExtent()
|
||||
{
|
||||
List<double> xExtents=new List<double>();
|
||||
@@ -235,6 +274,7 @@ namespace Navigator.Renderers
|
||||
if(bollingerBandGraphs.ContainsKey((int)Band.SMAN))xExtents.Add(bollingerBandGraphs[(int)Band.SMAN].GetXExtent());
|
||||
return xExtents.Count>0?xExtents.Max(x=>x):0;
|
||||
}
|
||||
|
||||
private double GetXDataExtentMin()
|
||||
{
|
||||
List<double> xExtents=new List<double>();
|
||||
@@ -249,6 +289,7 @@ namespace Navigator.Renderers
|
||||
if(bollingerBandGraphs.ContainsKey((int)Band.SMAN))xExtents.Add(bollingerBandGraphs[(int)Band.SMAN].GetXExtentMin());
|
||||
return xExtents.Count>0?xExtents.Min(x=>x):0;
|
||||
}
|
||||
|
||||
private double GetYDataExtent()
|
||||
{
|
||||
List<double> yExtents=new List<double>();
|
||||
@@ -268,6 +309,7 @@ namespace Navigator.Renderers
|
||||
}
|
||||
return maxDataExtent;
|
||||
}
|
||||
|
||||
private double GetYDataExtentMin()
|
||||
{
|
||||
List<double> yExtents=new List<double>();
|
||||
@@ -287,6 +329,7 @@ namespace Navigator.Renderers
|
||||
}
|
||||
return minDataExtent;
|
||||
}
|
||||
public event EventHandler RefreshRequested;
|
||||
|
||||
public event EventHandler RefreshRequested;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user