private void DrawPolygon(PolygonBase polygon, Graphics graphs) { if (polygon.Vertices.Count < 2) { return; } var path = new GraphicsPath(); if (polygon.IsClosedFigure) { path.StartFigure(); } path.AddLines(polygon.Vertices.ToPoints()); if (polygon.IsClosedFigure) { path.CloseFigure(); } using (var b = new SolidBrush(polygon.FillColor)) using (var p = new Pen(polygon.OutlineColor, polygon.OutlineWidth)) { p.DashStyle = polygon.OutlineDash; if (polygon.GetShapeType() != ShapeType.FreePencil) { graphs.FillPath(b, path); } //_filler.FillByScanline(graphs, polygon, polygon.FillColor); graphs.DrawPath(p, path); } }
public void ScanLineFillPolygon(Graphics graph, PolygonBase shape, Color color) { if (shape.Vertices.Count < 3) { return; } if (shape.GetShapeType() == ShapeType.FreePencil) { return; } var rec = new Rectangle(Point.Round(shape.Location), Size.Round(shape.Size)); if (rec.Location.Equals(Point.Empty)) { return; } rec.X -= 1; rec.Y -= 1; rec.Width += 2; rec.Height += 2; //var h = rec.Y + 1; var h = rec.Y + rec.Height; var et = new SortedDoublyLinkedList <CActiveEdge> [h]; var active = new SortedDoublyLinkedList <CActiveEdge>(); for (int i = 0; i < h; i++) { et[i] = new SortedDoublyLinkedList <CActiveEdge>(); } BuildEdgeList(shape.Vertices.ToList(), ref et); //for (int i = rec.Y - rec.Height; i < rec.Y; i++) for (int i = rec.Y; i < rec.Y + rec.Height; i++) { buildActiveList(ref active, ref et[i]); if (active.Count != 0) { using (var p = new Pen(color, 1F)) FillScan(i, ref active, graph, p); updateEdgeList(i, ref active); active.Sort(); } } }
// =====>>>>>>>>>> JSONText Message Received public override void OnWebSocketJSONText(string JSONText) { try { string ObjJSONText; List <object> PGBaseList = JsonConvert.DeserializeObject <List <object> >(JSONText); foreach (var PGBase in PGBaseList) { ObjJSONText = PGBase.ToString(); PolygonBase pGBase = JsonConvert.DeserializeObject <PolygonBase>(ObjJSONText); switch (pGBase.ev) { case "C": ForexQuote quote = JsonConvert.DeserializeObject <ForexQuote>(ObjJSONText); if (quote != null) { OnForexQuoteEvent?.Invoke(quote); } break; case "CA": ForexAggregate forexAgg = JsonConvert.DeserializeObject <ForexAggregate>(ObjJSONText); if (forexAgg != null) { OnForexAggEvent?.Invoke(forexAgg); } break; case "status": Status StatusIn = JsonConvert.DeserializeObject <Status>(ObjJSONText); HandleStatusMessage(StatusIn); break; default: break; } } } catch (System.Exception ex) { HandleJSONTextException("websocket_MessageReceived", JSONText, ex); } }
// =====>>>>>>>>>> JSONText Message Received public override void OnWebSocketJSONText(string JSONText) { try { string ObjJSONText; List <object> PGBaseList = JsonConvert.DeserializeObject <List <object> >(JSONText); foreach (var PGBase in PGBaseList) { ObjJSONText = PGBase.ToString(); PolygonBase pGBase = JsonConvert.DeserializeObject <PolygonBase>(ObjJSONText); switch (pGBase.ev) { case "Q": Quote quote = JsonConvert.DeserializeObject <Quote>(ObjJSONText); if (quote != null) { OnQuoteEvent?.Invoke(quote); } break; case "T": Trade trade = JsonConvert.DeserializeObject <Trade>(ObjJSONText); if (trade != null) { OnTradeEvent?.Invoke(trade); } break; case "status": Status StatusIn = JsonConvert.DeserializeObject <Status>(ObjJSONText); HandleStatusMessage(StatusIn); break; case "A": ASecond ASecRef = JsonConvert.DeserializeObject <ASecond>(ObjJSONText); if (ASecRef != null) { OnASecondEvent?.Invoke(ASecRef); } break; case "AM": AMinute AMinRef = JsonConvert.DeserializeObject <AMinute>(ObjJSONText); if (AMinRef != null) { OnAMinuteEvent?.Invoke(AMinRef); } break; default: break; } } } catch (System.Exception ex) { HandleJSONTextException("websocket_MessageReceived", JSONText, ex); } }
void RemovePointFromPolygon(FreePoint point, PolygonBase polygon) { Actions.RemoveDependency(polygon, point); }
void RemovePointFromPolygon(FreePoint point, PolygonBase polygon) { Actions.Actions.RemoveDependency(polygon, point); }
// =====>>>>>>>>>> JSONText Message Received public override void OnJSONTextReceived(string JSONText) { try { string ObjJSONText; List <object> PGBaseList = JsonConvert.DeserializeObject <List <object> >(JSONText); foreach (var PGBase in PGBaseList) { ObjJSONText = PGBase.ToString(); PolygonBase PGBaseRef = JsonConvert.DeserializeObject <PolygonBase>(ObjJSONText); switch (PGBaseRef.ev) { case "Q": Quote QuoteRef = JsonConvert.DeserializeObject <Quote>(ObjJSONText); if (QuoteRef != null) { OnQuoteEvent?.Invoke(QuoteRef); } break; case "T": Trade TradeRef = JsonConvert.DeserializeObject <Trade>(ObjJSONText); if (TradeRef != null) { OnTradeEvent?.Invoke(TradeRef); } break; case "status": Status StatusRef = JsonConvert.DeserializeObject <Status>(ObjJSONText); if (StatusRef != null) { if (StatusRef.status.Contains(PGStatusMessages.AuthSuccess)) { if (IsReconnect) { FireOnPGRestartedEvent(); } FireOnPGReadyEvent(IsReconnect); } OnPGStatusEvent?.Invoke(StatusRef.status, StatusRef.message); } break; case "A": ASecond ASecRef = JsonConvert.DeserializeObject <ASecond>(ObjJSONText); if (ASecRef != null) { OnASecondEvent?.Invoke(ASecRef); } break; case "AM": AMinute AMinRef = JsonConvert.DeserializeObject <AMinute>(ObjJSONText); if (AMinRef != null) { OnAMinuteEvent?.Invoke(AMinRef); } break; default: break; } } } catch (System.Exception ex) { HandleJSONTextException("websocket_MessageReceived", JSONText, ex); } }
/// <summary> /// Parse a polygon. (Currently only triangles) /// </summary> /// <param name="pgon">The polygon to parse.</param> private void ParsePolygon(PolygonBase pgon) { // // Handle an n-sided polygon // int numSides = pgon.VertexCoordinates.Length; // // Find verticies // System.Windows.Point[] pts = pgon.VertexCoordinates; IPoint[] iPts = new IPoint[numSides]; // // Parse all points // for (int i = 0; i < numSides; i++) { iPts[i] = pgon.Dependencies.FindPoint(pts[i], 0); Parse(iPts[i] as IFigure); } // // Generate sides // List <GeometryTutorLib.ConcreteAST.Segment> tutorSegments = new List <GeometryTutorLib.ConcreteAST.Segment>(); for (int i = 0; i < numSides; i++) { int j = (i + 1) % numSides; tutorSegments.Add(new GeometryTutorLib.ConcreteAST.Segment(uiToEngineMap[iPts[i]] as GeometryTutorLib.ConcreteAST.Point, uiToEngineMap[iPts[j]] as GeometryTutorLib.ConcreteAST.Point)); } definedSegments.AddRange(tutorSegments); GeometryTutorLib.ConcreteAST.Polygon newPoly = null; switch (numSides) { case 3: newPoly = new Triangle(tutorSegments); polygons[GeometryTutorLib.ConcreteAST.Polygon.TRIANGLE_INDEX].Add(newPoly); break; case 4: newPoly = Quadrilateral.GenerateQuadrilateral(tutorSegments); if (newPoly != null) { polygons[GeometryTutorLib.ConcreteAST.Polygon.QUADRILATERAL_INDEX].Add(newPoly); } break; case 5: case 6: case 7: case 8: case 9: case 10: break; default: break; } if (newPoly != null) { uiToEngineMap.Add(pgon, newPoly); } }
/// <summary> /// Parse a polygon. (Currently only triangles) /// </summary> /// <param name="pgon">The polygon to parse.</param> private void ParsePolygon(PolygonBase pgon) { // // Handle an n-sided polygon // int numSides = pgon.VertexCoordinates.Length; // // Find verticies // System.Windows.Point[] pts = pgon.VertexCoordinates; IPoint[] iPts = new IPoint[numSides]; // // Parse all points // for (int i = 0; i < numSides; i++) { iPts[i] = pgon.Dependencies.FindPoint(pts[i], 0); Parse(iPts[i] as IFigure); } // // Generate sides // List<GeometryTutorLib.ConcreteAST.Segment> tutorSegments = new List<GeometryTutorLib.ConcreteAST.Segment>(); for (int i = 0; i < numSides; i++) { int j = (i + 1) % numSides; tutorSegments.Add(new GeometryTutorLib.ConcreteAST.Segment(uiToEngineMap[iPts[i]] as GeometryTutorLib.ConcreteAST.Point, uiToEngineMap[iPts[j]] as GeometryTutorLib.ConcreteAST.Point)); } definedSegments.AddRange(tutorSegments); GeometryTutorLib.ConcreteAST.Polygon newPoly = null; switch(numSides) { case 3: newPoly = new Triangle(tutorSegments); polygons[GeometryTutorLib.ConcreteAST.Polygon.TRIANGLE_INDEX].Add(newPoly); break; case 4: newPoly = Quadrilateral.GenerateQuadrilateral(tutorSegments); if (newPoly != null) polygons[GeometryTutorLib.ConcreteAST.Polygon.QUADRILATERAL_INDEX].Add(newPoly); break; case 5: case 6: case 7: case 8: case 9: case 10: break; default: break; } if (newPoly != null) uiToEngineMap.Add(pgon, newPoly); }
// =====>>>>>>>>>> JSONText Message Received public override void OnWebSocketJSONText(string JSONText) { try { string ObjJSONText; List <object> PGBaseList = JsonConvert.DeserializeObject <List <object> >(JSONText); foreach (var PGBase in PGBaseList) { ObjJSONText = PGBase.ToString(); PolygonBase pGBase = JsonConvert.DeserializeObject <PolygonBase>(ObjJSONText); switch (pGBase.ev) { case "XQ": CryptoQuote quote = JsonConvert.DeserializeObject <CryptoQuote>(ObjJSONText); if (quote != null) { OnCryptoQuoteEvent?.Invoke(quote); } break; case "XT": CryptoTrade trade = JsonConvert.DeserializeObject <CryptoTrade>(ObjJSONText); if (trade != null) { OnCryptoTradeEvent?.Invoke(trade); } break; case "XA": CryptoAggregate cryptoAgg = JsonConvert.DeserializeObject <CryptoAggregate>(ObjJSONText); if (cryptoAgg != null) { OnCryptoAggEvent?.Invoke(cryptoAgg); } break; case "XS": CryptoSIP CryptoSIPRef = JsonConvert.DeserializeObject <CryptoSIP>(ObjJSONText); if (CryptoSIPRef != null) { OnCryptoSIPEvent?.Invoke(CryptoSIPRef); } break; case "XL2": CryptoLevel2 cryptoLevel2 = JsonConvert.DeserializeObject <CryptoLevel2>(ObjJSONText); if (cryptoLevel2 != null) { OnCryptoLevel2Event?.Invoke(cryptoLevel2); } break; case "status": Status StatusIn = JsonConvert.DeserializeObject <Status>(ObjJSONText); HandleStatusMessage(StatusIn); break; default: break; } } } catch (System.Exception ex) { HandleJSONTextException("websocket_MessageReceived", JSONText, ex); } }