private List <PolyLog> GetIntersectedPoly(PolyLog parentOfParentLog, PolyLog parentLog, List <PolyLog> log)
        {
            List <PolyLog> res = new List <PolyLog>();

            foreach (PolyLog polyLog in log)
            {
                if (parentLog != polyLog)
                {
                    //EntraDrawer.DrawIntoFileTesting(polyLog.PolysUnion);
                    //EntraDrawer.DrawIntoFileTesting(parentLog.PolysUnion);
                    //EntraDrawer.DrawIntoFileTesting(parentOfParentLog.PolysUnion);

                    if (polyLog.IsOperation(parentOfParentLog, parentLog, ClipType.ctIntersection))
                    //if (EntraSolver.IsPolyOperation(parentLog.Poly, polyLog.Poly, ClipType.ctIntersection))
                    {
                        if (polyLog.Comp is RopeEntityPoly)
                        {
                            if (res.Count == 0)
                            {
                                res.Insert(0, polyLog);
                            }
                            else
                            {
                                res.Insert(res.Count - 1, polyLog);
                            }
                        }
                        else
                        {
                            res.Insert(0, polyLog);
                        }
                    }
                }
            }
            return(res);
        }
Exemple #2
0
        public ErrorsViewer(PolyLog log)
        {
            InitializeComponent();

            //dark skin
            if (MainWindow.CurrentSkin == SkinType.Dark)
            {
                SharedResourceDictionary.SharedDictionaries.Clear();
                Resources.MergedDictionaries.Add(ResourceHelper.GetSkin(SkinType.Dark));
                Resources.MergedDictionaries.Add(new Win.ResourceDictionary
                {
                    Source = new Uri("pack://application:,,,/HandyControl;component/Themes/Theme.xaml")
                });
                this?.OnApplyTemplate();
            }

            foreach (LexerError lexErr in log.LexerLog.Errors)
            {
                ErrsBox.Document = new Win.Documents.FlowDocument(new Win.Documents.Paragraph(
                                                                      new Win.Documents.Run("[Lexer:Error]" + lexErr.Message)));
            }
            foreach (ParserError parErr in log.ParserLog.Errors)
            {
                ErrsBox.Document = new Win.Documents.FlowDocument(new Win.Documents.Paragraph(
                                                                      new Win.Documents.Run("[Parser:Error]" + parErr.Message +
                                                                                            " (In " + parErr.ThrowedIn.ToString() + ")")));
            }
        }
 private void ReAddFrogToAllPaths(PolyLog frogPolyLog, ref List <List <PolyLog> > allPaths)
 {
     for (int i = 0; i < allPaths.Count; i++)
     {
         var path = allPaths[i];
         path.Add(frogPolyLog);
     }
 }
        public Bitmap GetPathBitmap(int indexPath, bool withInputImage)
        {
            FrogEntityPoly frog        = new FrogEntityPoly(this._entra, this._entra.EngineState.FrogRB);
            PolyLog        frogPolyLog = new PolyLog(frog, frog.GetDefPoly(), null);
            var            pathPoints  = BuildPath(frogPolyLog, AllPaths[indexPath]);
            var            form        = new PathForm(pathPoints, withInputImage);

            return(form.GetPathBitmap());
        }
 private int RopeLastSorter(PolyLog x, PolyLog y)
 {
     if (x.Comp is RopeEntityPoly || y.Comp is RopeEntityPoly)
     {
         return(-1);
     }
     else
     {
         return(1);
     }
 }
        public void DrawShortestPath(int counter)
        {
            String         dirName     = "PolysTesting";
            FrogEntityPoly frog        = new FrogEntityPoly(this._entra, this._entra.EngineState.FrogRB);
            PolyLog        frogPolyLog = new PolyLog(frog, frog.GetDefPoly(), null);
            var            shortestP   = EntraPlusUsageManager.GetShortestPath(this.AllPaths)[0];

            var pathPoints = BuildPath(frogPolyLog, shortestP);
            var form       = new PathForm(pathPoints, true);

            form.DrawPathIntoOutput(dirName + @"\path " + counter + ".jpg");
        }
        public void DrawPaths()
        {
            String         dirName     = "PolysTesting";
            FrogEntityPoly frog        = new FrogEntityPoly(this._entra, this._entra.EngineState.FrogRB);
            PolyLog        frogPolyLog = new PolyLog(frog, frog.GetDefPoly(), null);

            for (int i = 0; i < AllPaths.Count; i++)
            {
                var pathPoints = BuildPath(frogPolyLog, AllPaths[i]);
                var form       = new PathForm(pathPoints, true);
                form.DrawPathIntoOutput(dirName + @"\path " + i + ".jpg");
            }
        }
 private void InitializeFrogPoly()
 {
     _frogPolyLog = new PolyLog(_frog);
     foreach (PolyLog polyLog in _log)
     {
         foreach (APPair apPair in polyLog.ApPairs)
         {
             if (EntraSolver.IsPolyOperation(_frog.GetDefPoly(), apPair.Poly, ClipType.ctIntersection))
             {
                 _frogPolyLog.AddPoly(_frog.GetDefPoly(), polyLog.Comp);
             }
         }
     }
 }
        private static List <Point> BuildPath(PolyLog frogPolyLog, List <PolyLog> path)
        {
            //path.Insert(0, frogPolyLog);
            List <Point> pathPoints = new List <Point>();

            for (int i = 0; i < path.Count; i++)
            {
                PolyLog entity = path[i];
                if (entity.Comp is RopeEntityPoly)
                {
                    pathPoints.Add(VectorToPoint(StaticData.EngineManager.CookieRB.PositionXNACenter2D));
                }
                else
                {
                    pathPoints.Add(VectorToPoint(entity.Comp.PositionXNACenter2D));
                }
            }
            return(pathPoints);
        }
Exemple #10
0
 public PolyNode(PolyLog polyLog, PolyNode parent)
 {
     PolyLog = polyLog;
     Parent  = parent;
     Childs  = new List <PolyNode>();
 }