Beispiel #1
0
        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);
                }
        }
Beispiel #2
0
        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();
                }
            }
        }
Beispiel #3
0
        // =====>>>>>>>>>> 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);
            }
        }
Beispiel #4
0
        // =====>>>>>>>>>> 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);
 }
Beispiel #6
0
 void RemovePointFromPolygon(FreePoint point, PolygonBase polygon)
 {
     Actions.Actions.RemoveDependency(polygon, point);
 }
Beispiel #7
0
        // =====>>>>>>>>>> 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);
        }
Beispiel #10
0
        // =====>>>>>>>>>> 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);
            }
        }