Added ability render bases on phone/tablet

This commit is contained in:
2025-02-23 12:35:56 -05:00
parent b07ace85eb
commit f3d477a803

View File

@@ -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;
}
}